一、定义:元组可以看作一个“不可变的列表”。用()内的逗号隔开多个任意类型的元素。
二、定义补充:
1、单个元素的情况:要注意()内必须包含逗号才是元素,若只有一个元素没有逗号表示包含的意思,即还是那个元素。
a = (10)
print(type(a)) # 结果为 int
b = (10,)
print(type(b)) # 结果为tuple
2、元组内元素的类型:
①不可变类型:无法修改。
a = (1, 2, [3, 4])
a[0] = 5
print(a) # 报错
②可变类型:拿列表为例,列表本身不可修改,但是列表为可变类型,其元素可以修改而不改变列表本身,这种变化可以在元组内发生。
b = (1, 2, [3, 4])
print(id(b))
b[2][0] = 5 # 将元组内的子列表的0号索引的元素重新赋值,但子列表的id不变
print(b) # 结果为 (1, 2, [5, 4])
print(id(b)) # 与开始的id相同
三、作用:按照位置(索引)存放多个值,只用于读不用于改。
四、类型转换:理同列表,可以用for循环遍历的类型都可以用tuple()功能转化为元组,即把每次循环取得的值作为元素组成一个元组。
print(tuple('abc')) # 结果为 ('a', 'b', 'c')
print(tuple([1, 2, 3])) # 结果为 (1, 2, 3)
print(tuple({'a': 1, 'b': 2})) # 把key组成元组,结果为 ('a', 'b')
五、内置操作
1、按索引取值:可正向可反向,只能取,不能改。
a = (1, 2, 3)
print(a[0]) # 结果为 1
print(a[-1]) # 结果为 3
a[1] = 4 # 报错
2、切片,长度,成员运算in和not in,查找index,计数count:理同列表。
a = (0, 1, 2, 3, 4, 5, 6)
print(a[:]) # 结果为 (0, 1, 2, 3, 4, 5, 6)
print(a[::]) # 结果为 (0, 1, 2, 3, 4, 5, 6)
print(a[1:6:2]) # 结果为 (1, 3, 5)
print(a[::-1]) # 结果为 (6, 5, 4, 3, 2, 1, 0)
print(a[:0:-1]) # 结果为 (6, 5, 4, 3, 2, 1)
a = (0, 1, 2, 3, 4, 5, 6)
print(len(a)) # 结果为7
a = (1, 2, 3)
print(1 in a) # 结果为 True
print(4 not in a) # 结果为 True
a = (1, 2, 3, 2, 2)
print(a.index(2)) # 结果为 2
print(a.index(4)) # 报错
a = (1, 2, 3, 2, 2)
print(a.count(2)) # 结果为 3