前言:
简单介绍元组及其相关操作。
一、什么是元组
定义 | 不可改变的序列,同list一样,可以存放任意类型的容器; 不能增删改,但能查;不能切片、索引赋值; 相当于不可变的list;list是可变的; |
表示方法 | 用小括号()括起来,单个元素括起来后加逗号(,),区分单个对象还是元组 |
创建空元组的字面值 | t = () #t 绑定空元组 |
创建非空元组 | t = 200 >>>200 t = 200, >>>( 200, ) t = (200) >>>200 t = (20,) >>>( 20, ) t = (1, 2, 3) t = 100, 200, 300 |
Type(x) | 返回x的类型 |
错误示例 | t = (200) >>>绑定整数,不是元组,得加逗号 x, y, z = 100, 200, 300 >>>序列赋值等同于如下 x, y, z = (100, 200, 300 ) >>>分别赋值给x,y,z x, y, z = [ 100, 200, 300 ] >>>分别赋值给x,y,z x, y, z = “ABC” >>>分别赋值给x,y,z |
二、元组的构造函数
Tuple() | 生成一个空元组,等同于() |
Tuple(iterable) | 用iterable生成一个元组 |
示例 |
|
t = tuple() t = tuple( [ 2, 3, 5, 7] ) t = tuple(range(10)) |
|
三、元组的运算
3.1 算术运算
+ += | 拼接操作 |
* *= | 用原元组生成重复的元组 |
示例 |
|
t = (1,2,3)+(4,5,6) t = (1,2) * 3
t = (1, 2, 3) t += (4, 5, 6) | >>>t=(1,2,3,4,5,6) >>>t=(1,2,1,2,1,2)
>>>t=(1,2,3,4,5,6) |
注: | tuple的拼接和list的拼接看起来很像,但是tuple拼接后id会更改,(string也会更改),而list则不会。 |
3.2 比较运算
< <= > >= == != | |
规则与列表的比较规则完全相同 | |
示例 |
|
(1, ‘二’) < (‘二’,1) (1, ‘二’) != (‘二’,1) | >>>类型不同不能比较大小 >>>True,能比较是否相等 |
3.3 in / not in
与列表的in / not in规则完全相同 |
四、索引 和 切片
索引 | 元组[ 整数 ] |
切片 | 元组[ 整数 :整数 ] 元组[ 整数 :整数:整数 ] |
规则同字符串的切片规则 元组不支持切片赋值、索引赋值 |
|
五、元组的方法
t.index(v [, begin[, end ] ] ) | 返回对应元素的index;v不存在时,触发ValueError错误 |
t.count( x ) | 返回元组中对应元素的个数 |
六、序列总结
6.1种类
字符串str
列表list
元组tuple
字节串bytes
字节数组bytearray
6.2能用于序列的函数
len(x),max(x), min(x), sum(x), any(x), all(x),
str(obj) (将对象转为字符串)
list(iterable) 将可迭代对象转为列表
tuple(iterable) 将可迭代对象转为元组
reversed(seq) 返回反向顺序的可迭代对象
sorted(iterable, reverse = False)