6. Python 元组,不可变的列表,滚雪球学 Python

希望看到文章的 Python 学习爱好者可以坚持打卡,在评论区坚持跟橡皮擦卡学习的朋友,在 100 天之后,橡皮擦将送出神秘大奖

已完成的文章

标题 链接
1. 这才是 Python 学习的正确起手姿势,滚雪球学 Python https://dream.blog.csdn.net/article/details/109586142
2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python https://dream.blog.csdn.net/article/details/109697047
3. 无转折不编程,滚雪球学 Python https://dream.blog.csdn.net/article/details/109785235
4. 列表一学完,Python 会一半,滚雪球学 Python https://dream.blog.csdn.net/article/details/109999211
5. Python 循环的本质就是一段代码懒得重复写 https://dream.blog.csdn.net/article/details/110087447

六、Python 元组,不可变的列表

今天新学习的概念叫做元组,其实学元组还是离不开列表,第一个知识点是元组的英文 tuple 要牢牢记住,第一个知识点是元组与列表的区别,列表的元素可以修改,元组的元素不可以修改,所以元素又可以称为不可变的列表,好了元组学习完毕了。

6.1 元组的定义

列表用中括号 [] 进行定义,元组用小括号 () 进行定义,元组的语法格式如下:

# my_tuple 是元组变量名,可以任意命名
my_tuple = (元素1,元素2,元素3...)

元组中的每一个数据也称为元素,元素也可以是数字、字符串或者列表等内容,输出使用 print 函数即可。

特别注意如果元组内的元素只有一个,需要在定义的时候在元素的右侧增加一个英文逗号 ,,例如:

# 只有一个元素
my_tuple = (元素1,)

下面就在 PyCharm 中进行一下实际的编码吧。

# 声明一个元组对象
my_tuple = (1, 2, 3)
print(my_tuple)
print(type(my_tuple))


# 声明一个元组对象
my_tuple1 = ("www", "aaa", "ggg")
print(my_tuple1)
print(type(my_tuple1))

# 声明只有一个元素的元组对象
my_tuple2 = ("www", )
print(my_tuple2)
print(type(my_tuple2))

6.2 读取元组中的元素

有列表在前,该部分学期起来就比较简单了,在元组中获取元素也是通过中括号 [] 加上索引的方式,与列表保持一致。

列表也可以通过循环去输出,可以自行通过 for 循环进行尝试。

列表中的元素可以通过索引去修改,但是元组不可以,以下代码会出现错误。

# 声明一个元组对象
my_tuple = ("www", "aaa", "ggg")
my_tuple[1] = "good"
print(my_tuple)

该错误提示如下:

TypeError: 'tuple' object does not support item assignment

原因为本篇博客开始提及的元组不允许修改元素,上述错误翻译之后表示 tuple 对象不支持赋值。

6.3 元组的其他知识补充

由于元组与列表太相似了,接下来的一些知识点只做简单罗列。

  • 切片适用于元组
  • 列表方法中不涉及修改列表元素的方法都可用于元组,例如 lencount ...,如果列表方法会对元素进行修改,那不可用于元组,例如 appendinsert... 如果想详细查阅,回忆 dir 方法。
  • 部分列表可用的内置函数同样适用于元组,例如 maxmin...

6.4 元组与列表转换

在开发代码的过程中,有时需要对列表与元组进行相互转换,该转换类似之前学习过的强制转换的过程,核心的内置函数为 listtuple

将元组修改为列表。

my_tuple = ("www", "aaa", "ggg")
my_list = list(my_tuple)
print(my_list)

将列表修改为元组。

my_list = ["www", "aaa", "ggg"]
my_tuple = tuple(my_list)
print(my_tuple)

6.5 内置函数 zip

函数 zip 可以将一个可迭代对象,如列表打包成元组,打包之后返回的是一个 zip 对象,说起来有点绕,而且应用的场景不是很明确,可以先看代码学习一下。

en_names = ["apple", "orange", "pear"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData
print(type(zipData))  # 打印 zipData 数据类型
print(list(zipData))  # 输出 zipData 中的数据内容

输出结果:

<zip object at 0x0000024C1E4FF648>
<class 'zip'>
[('apple', '苹果'), ('orange', '橘子'), ('pear', '梨')]

通过代码你可以看到,zip 把两个列表的数据合并了,每个列表中对应索引位置的元素合并在了一个元组里面。上述代码中就出现了 apple苹果 对应,orange橘子 对应,pear 对应。

如果放在 zip 函数的列表参数长度不相同,那 zip 会选择元素最少的那个列表作为依据,形成对应关系。

en_names = ["apple", "orange"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData
print(type(zipData))  # 打印 zipData 数据类型
print(list(zipData))  # 输出 zipData 中的数据内容

该代码第一个列表有 2 个元素,第二个列表有 3 个元素,最终输出的结果为:

<zip object at 0x0000026DE2F7F608>
<class 'zip'>
[('apple', '苹果'), ('orange', '橘子')]

如果在 zip 中的参数前面增加 * 符号,相当于解压,返回二维矩阵式。

代码如下:

en_names = ["apple", "orange"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData

unzipData = zip(*zipData)
print(unzipData)  # 打印 unzipData

print(list(unzipData))  # 打印 unzipData 内容

6.6 元组的功能与应用场景

元组既然与列表这么相似,那为何 Python 还要专门设计一个元组数据类型来呢?

相比于列表,元组有如下优点。

  1. 因为其不可修改,可以保护数据;
  2. 元组在底层数据结构上比列表简单,占用的资源少,程序执行速度快;(说了也不用记住的知识)
  3. 元组很多时候回用作函数的返回值。(后续知识)

6.7 这篇博客的总结

元组与列表就像是两个相似的亲兄弟,只在外观上有一点点区别,核心的区别是一个可以被修改(列表),一个不可以被修改(元组),其它的差异都是基于此衍生出来的,所以掌握这个内容之后,你能对比着学会这两个知识点。

最后一碗毒鸡汤

只要坚持下去,总会有失败的一天。 O(∩_∩)O 哈哈~

想学Python爬虫,可以订阅橡皮擦专栏哦~ 💋💋💋 点击发现惊喜 💋💋💋

🌹🌹🌹🌹🌹🌹🌹🌹


如果你有想要交流的想法、技术,欢迎在评论区留言。


如果你想跟博主建立亲密关系,可以关注同名公众号 “梦想橡皮擦”,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容