0.元组
元组:Python 的元组与列表类似可以容纳多种不同类型的对象,不同之处在于元组的元素不能修改 。元组使用小括号,列表使用方括号。
0.创建元组
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可(也可不用括号,但是为了代码的可读性等,还是每次都加上为好):
注意:当元组中就只有一个元素时,需要在元素后面添加逗号 , 否则括号会被当作运算符使用:
1.访问元组
与字符串和列表一样,可以通过下标索引访问元组中的某个元素:
也可以用for循环访问元组所有元素:
2.元组也支持切片操作
**切片并不是对元组进行原地修改,而是将元组中的元素以某种特定的组合导出成一个新的对象。**举例如下:
3.元组的查
由于元组不支持修改,所以就只能查,不能增删改!
0.count()方法
count()方法:查元组中指定某元素出现的次数。
1.index()方法
index()方法:查找某个元素的索引值,传入的参数是需要查找的元素,也可指定查找元组的起始位置(若有多个相同元素,其返回的是第一个找到的元素的索引值)。
4.元组的打包和解包
创建元组的过程其实就是打包,而解包就是将元组中的各个元素赋值给各个变量的过程:
其实解包不仅仅适用于元组,其也同样适用于任何序列类型:
需要注意的是:解包是赋值等号左边的变量数量必须与右侧序列中的元素数量保持一致!
除非 给某个变量前面加一个*,则多余的元素都会在最后一个变量中(形成一个列表):
1.元组的加法和乘法
0.加法
1.元组的加法其实就是拼接元组,相加的对象都需要是元组才行,如下:
1.乘法
元组的乘法其实就是重复元组内的所有元素若干次形成新的元组。
2.嵌套元组
1.嵌套元组,顾名思义,就是在元组中嵌入元组作为元素。如下:
2. 访问嵌套元组
-
访问所有元素(通过嵌套循环)
-
访问某个元素(通过下标索引)
3.可以对元组使用列表推导式
对元组使用列表推导式生成的是列表哦,不是元组!
那有元组推导式吗?
有以上代码可知,并没有元组推导式,上面的代码其实是一个生成器,后面才会学到!
4.元组真的完全不可变了吗?
由上可知,元组的元素中若存在可变的列表,那列表还是可以修改的,相当于该元组也可以被修改!
另外,要区分以下以下情况:
两次查看元组的内存地址结果并不一样,所以,其实重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象!
5.删除整个元组
由元组的特性我们可知元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下:
这里的删除元组和列表的清空方法clear()不一样,是销毁了整个元组,元组不复存在!
6. 课后作业
0.请用一句话描述什么是列表?再用一句话描述什么是元组?
答:列表是一个大仓库,它可以存储不同类型的对象,且可以随时对其增删改查。
而元组是一个封闭的列表,一旦定义,则不能改变,只能查!
1.什么情况下你需要使用元组而不是列表?
答:当我们希望内容不被轻易改写的时候,我们使用元组。
当我们需要频繁修改数据,我们使用列表。
2.当元组和列表掉下水,你会救谁?
答:救列表,因为列表提供了比元组更丰富的内置方法,这相当大的提高了编程的灵活性。
而元组固然安全,但其一定创建就无法修改(除非通过新建一个元组来间接修改,但这就带来了消耗),而我们人是经常摇摆不定的,所以元组只有在特殊的情况才用到,平时还是列表用的多。综上所述,还是救列表。
3.请将下图左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法。
答:答案如下图:
元组只有count()方法和index()方法,上面其他的方法都没有!
4.创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可?
答:在拼接只有一个元素的元组的时候,如下:
5.x, y, z = 1, 2, 3 请问x, y, z是元组吗?
答:注意:所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组!所以x, y, z是一个元组,如下:
6.请写出以下情景中应该使用列表还是元组来保存数据:
- 游戏中角色的属性: 2) 你的身份证信息: 3) 论坛的会员: 4) 团队合作开发程序,传递给一个你并不了解具体实现的函数的参数: 5) 航天火箭各个组件的具体配置参数: 6) NASA系统中记录已经发现的行星数据:
答: 使用列表保存的情景:1)、3)、6),这些数据都一易改变,或者后期需要增加
使用元组保存的情景:2)、4)、5),这些是不会改变或者不能改变的数据。