Python标准数据类型-元组
- 元组
- 元组的定义
-
- 元组的访问
- 修改的元组
-
- 元组相关方法和系统函数
- 元组运算符
- 元组的应用
-
元组
- Python 的元组与列表类似,不同之处在于元组的元素不能修改。
- 元组中的元素类似于列表,可以是不同的类型。
元组的定义
()定义
- 使用圆括号定义,元素之间用逗号隔开。
- 元组定义如果只有一个元素,需要在元素后面加逗号。
- 也可以没有()
tp1 = (1,) # 元组中一个元素
tp1 = (1,2,[1,2,3])
tp1 = () # 空元组
tp1 =(1) # tp1是int型,和没加()效果一样
tp1 =1,2,3 # 和(1,2,3)效果一样
tuple定义
- tuple()定义空元组。
- tuple(iterable=())将可迭代的对象转换为元组。
元组的访问
- 同列表的访问方法,索引和切片方式访问。
- 元组中的元素无法改变。
tp1 = (1,2,3); tp[1]=5 # 报错
list1=[1,2,3]; list1=[5] # 合法
tp1 = (1,2,3,4,5); pritn(tp[:4]) # (1, 2, 3, 4)
修改的元组
元组拼接组合
tp1=(1,2,3); tp2=(4,5,6); tp1 + tp2
元组删除
- 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
元组相关方法和系统函数
| 方法 | 描述 | 举例 |
|---|
| tuple.count | 返回某个元素的数目 | tp1=(1,2,3,4,2); tp1.count(2) => 2 |
| tuple.index(value, start, stop) | 返回 | 元素所在的index |
| len(tuple) | 返回tuple的元素数目 | tp1=(1,2,3,4,2); len(tp1) => 5 |
| min(tuple),max(tuple) | 返回tuple中的最大最小值 | |
| sum(tuple) | 元组中元素的和 | a=(1,2,3); sum(a) => 6 |
| sorted(tuple) | 元组排序, 返回列表 | |
元组运算符
| 方法 | 描述 | 举例 |
|---|
| + | 并上另一个元组 | (1,2,3)+(4,5,6) => (1, 2, 3, 4, 5, 6) |
| * | 复制元组元素添加至原元组后面 | (3,)*5 => (3,3,3,3,3) |
| in, not in | 判断一个元素是否在元组中 | 3 in(1,3) =>True |
| is is not | 判断两个元组是否引用同一块空间 | a=(1,), b=(2,), a is not b => False |
元组的应用
打包和解包
- 把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型。
- 把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量。
- 如果在解包时,元素的个数和变量的个数不一致,就引起错误。
tp1 = "dog", "cat", "duck", "chick"
result:
('dog', 'cat', 'duck', 'chick')
a, b, c, d = tp1; print(a,b,c,d)
result:
dog cat duck chick
a, b = tp1
result:ValueError
- 解决变量少于元组个数这个错误的方法是使用*,*变量可以接收多个值,就将多个元素变成了一个列表,这个通配符只能出现一次。
- *y = 1,2,3,拿着一些散列的元素,就会把散列元素装到列表里面。
- 已经装好的包前面加*,系统就会拆包成散列。
tp1 = "dog", "cat", "duck", "chick"; a, *b = tp1
print(a, b)
print(a,*b)
result:
dog ['cat', 'duck', 'chick']
dog cat duck chick
交换两个变量的值
函数返回多个值
- 如果return语句中有两个值,这两个值会组装成一个二元组然后返回。
- 调用定义的函数会得到这个二元组,也可以通过解包语法将二元组中的两个值分别赋给两个变量。