元组是一种固定长度、不可变的python对象序列。
1.创建
创建元组最简单的方法就是用逗号分隔序列值。
tup = 4,5,6
tup
(4,5,6)
当你通过更复杂的表达式来定义元组时,通常需要用括号将值包起来.
tup_2 =(4,5,6),(7,8)
tup_2
((4, 5, 6), (7, 8))
以上是生成了元素是元组的元组。
2.转换
你可以使用tuple函数将任意序列或迭代器转换为元组:
tuple([4,0,2])
(4, 0, 2)
tup = tuple('string')
tup
('s', 't', 'r', 'i', 'n', 'g')
元组的元素可以通过中括号[ ]来获取,在大多数序列类型中都可以使用这个方法。
3.修改
虽然对象元组中储存的对象其自身是可变的,但是元组一旦创建,各个位置上的对象是无法被修改的:
tup = tuple(['foo',[1,2],True])
tup[2] = False
TypeError Traceback (most recent call last)
<ipython-input-11-b89d0c4ae599> in <module>()
----> 1 tup[2] = False
TypeError: 'tuple' object does not support item assignment
但是如果元组中有一个对象是可变的,例如列表,那么你就可以在它内部进行修改:
tup[1].append(3)
tup
('foo', [1, 2, 3], True)
也可以使用+号连接元组生成更长的元组:
(1,None,'foo')+(2,3)+(1,'bear')
(1, None, 'foo', 2, 3, 1, 'bear')
将元组乘以整数,则会和列表一样,生成多份拷贝的元组,请注意对象自身并没有复制,只是指向它们的引用进行了复制。
4.拆包
如果你想要将元组型的表达式赋值给变量,python会对等号右边的值进行拆包;
即使是嵌套元组也可以拆包,使用这个功能可以轻易的变换变量名。
拆包的一个常用场景就是遍历元组或者列表组成的序列:
seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
print('a ={0},b ={1},c ={2}'.format(a,b,c))
a =1,b =2,c =3
a =4,b =5,c =6
a =7,b =8,c =9
另外一个常用场景就是从函数返回多个值。
当然paython语言也有一些更为高级的元组拆包功能,用于帮助你从元组的起始位置“采集”一些元素。这个功能就是使用特殊语法*rest,用于在函数调用时获取任意长度的位置参数列表:
values= 1,2,3,4,5
a,b,*rest = values
a,b
(1, 2)
rest
[3, 4, 5]
rest部分有时是你想要丢弃的数据,为了方便会使用下划线(_)来表示不想要的变量:
a,b,*_ = values
元组方法
由于元组的内容和长度是无法改变的,所以它的实例方法比较少,不过一个常用的方法就是count(列表中也可以用),用于计量某个数值在元组中出现的次数:
a = (1,2,2,2,3,4,2)
a.count(2)
4
以上就是paython中元组的部分用法。