元祖(tuple)是python独有的一类对象。与列表(list)非常类似,只不过元祖不能在远处进行修改,通常用圆括号表示。
1、元祖的常见运算
# 创建一个空元祖
>>> t = ()
>>> type(t)
<class 'tuple'>
# 创建一个单元素的元祖,注意后面的逗号
# 如果没有逗号,Python将会认为是int
>>> t = (0,)
# 多个元素
>>> t = (0, 'Ni', 1.2, 3)
# 不带圆括号也可以,但为了可读性建议带上
>>> t = 0,
>>> type(t)
<class 'tuple'>
# 通过tuple函数创建一个元祖
>>> t = tuple('spam')
>>> t
('s', 'p', 'a', 'm')
# 通过索引分片获取元祖元素
>>> t[2]
'a'
>>> t[1:3]
('p', 'a')
# 获取元祖长度
>>> len(t)
4
# 尝试对元祖元素修改会报错
>>> t[2] = 'p'
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
t[2] = 'p'
TypeError: 'tuple' object does not support item assignment
# 元祖的for循环和列表解析
>>> for x in t:
print(x, end=' ')
s p a m
>>> [x * 2 for x in t]
['ss', 'pp', 'aa', 'mm']
# 查找与计算
>>> t.index('s')
0
>>> t.count('s')
1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
2、元祖与列表的转换
>>> t = ('cc', 'aa', 'dd', 'bb')
>>> tmp = list(t)
>>> tmp.sort()
>>> tmp
['aa', 'bb', 'cc', 'dd']
>>> t = tuple(tmp)
>>> t
('aa', 'bb', 'cc', 'dd')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3、元祖的不可变性指的是顶层不可变性
>>> t = (1, [2, 3], 4)
# 直接修改会报错
>>> t[1] = 'spam'
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
t[1] = 'spam'
TypeError: 'tuple' object does not support item assignment
# 取出以后修改不会报错,因为list是可变的
>>> t[1][0] = 'spam'
>>> t
(1, ['spam', 3], 4)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
哈哈,以上就是python小工具关于元祖的简介,出自
《python学习手册》第九章,有兴趣的话欢迎关注公众号:python小工具。获取相关资料。