Python013-第二章13.数据容器-tuple
2026/6/24 13:16:05 网站建设 项目流程

元组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. 现有三个变量:a=100,b=200,c=300,现需要将这三个变量值进行交换,将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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询