Python013-第二章13.数据容器-tuple 元组tuple引言列表特点元素可重复、有序、可以修改。如果要记录一些信息而这些信息不能被修改只能查询那 么列表就不合适了此时就可以考虑使用元组元组与列表最大的不同点在于元组一旦定义完成不可修改。介绍元组是不可变的序列类似于列表但创建后不能修改。特点1. 可以存储不同类型的元素2. 元素可以重复、有序、不可以修改支持索引访问、切片定义元组名称 (元素1, 元素2, ……)定义空元组元组名称 元组名称 tuple()方法count()统计某元素在元组中出现的次数index()查找某个元素在元组中的索引位置第一次出现的位置元组基本操作# 元组基本操作 -tuple # 定义 t1 (80, 95, 78, 50, 76, 80, 85, 20) print(t1) print(type(t1)) # 索引访问 print(t1[0]) print(t1[-1]) # t1[0] 100 # TypeError: tuple object does not support item assignment 元组不支持项目赋值 # 切片 print(t1[0:5:1]) print(t1.count(80)) # 2 print(t1.index(80)) # 0 # 注意点如果定义单元素的元组单个元素之后需要加上逗号比如(100,) (A,) t2 () print(t2) # () print(type(t2)) # class tuple t3 (100) print(t3) # 100 print(type(t3)) # class int t4 (100,) print(t4) # (100,) print(type(t4)) # class tuple # 所以小括号()可以定义元组也可以表示将表达式括起来组包与解包组包Packing将多个值合并到一个容器元组、列表中。解包Unpacking:将容器元组、列表解开成独立的元素分别赋值给多个变量。定义元组的过程其实就是组包的过程。定义元组加或不加括号都可以但是解释器是会给它加上括号的建议加上括号。# 组包操作 t1 (5, 7, 9, 10, 2, 23, 12) t2 5, 7, 9, 10, 2, 23, 12 print(t1) # (5, 7, 9, 10, 2, 23, 12) print(t2) # (5, 7, 9, 10, 2, 23, 12) # 解包操作 # 基础解包变量数量与容器的元素个数一致 a,b,c,d,e,f,g t1 print(a,b,c,d,e,f,g) # 5 7 9 10 2 23 12 # a,b,c,d,e,f t1 # print(a,b,c,d,e,f) # 值太多无法解包 ValueError: too many values to unpack (expected 6) # * 扩展解包 *收集剩余的所有元素封装列表list中 first, second, *other, last t1 print(first) # 5 print(second) # 7 print(other) # [9, 10, 2, 23] print(last) # 12 # 说明在元组解包时*表示收集剩余的所有元素允许我们处理不确定数量的元素生成列表以便于可以进行进一步的处理。 *other, last2, last1 t1 print(other) # [5, 7, 9, 10, 2] print(last2) # 23 print(last1) # 12 # 案例 # 1. 现有两个变量分别为 a 10, b 20, 现需要将这两个变量值交换然后输出到控制台。 a 10 b 20 a,b b,a print(a) # 20 print(b) # 10 a,b t t b,a print(t) # NameError: name t is not defined t b,a a,b t print(a) # 10 print(b) # 20 # 2. 现有三个变量a100,b200,c300现需要将这三个变量值进行交换将a,b,c的值分别赋值给c,a,b,并将其输出到控制台。 a 100 b 200 c 300 # 元组的组包与解包操作 c, a, b a, b, c print(a) # 200 print(b) # 300 print(c) # 100