2022年 11月 7日

python 元祖简介

元祖(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小工具。获取相关资料。
在这里插入图片描述