包装和拆包元组
Python 中的元组是用逗号分隔的值。用于输入元组的括号是可选的,因此两个赋值
a = 1, 2, 3 # a is the tuple (1, 2, 3)
和
a = (1, 2, 3) # a is the tuple (1, 2, 3)
是等价的。赋值 a = 1, 2, 3
也称为*打包,*因为它将值组合在一个元组中。
请注意,单值元组也是元组。要告诉 Python 变量是元组而不是单个值,你可以使用尾随逗号
a = 1 # a is the value 1
a = 1, # a is the tuple (1,)
如果使用括号,还需要逗号
a = (1,) # a is the tuple (1,)
a = (1) # a is the value 1 and not a tuple
要从元组中解压缩值并执行多个赋值,请使用
# unpacking AKA multiple assignment
x, y, z = (1, 2, 3)
# x == 1
# y == 2
# z == 3
符号 _
可以用作一次性变量名,如果只需要元组的一些元素,充当占位符:
a = 1, 2, 3, 4
_, x, y, _ = a
# x == 2
# y == 3
单元素元组:
x, = 1, # x is the value 1
x = 1, # x is the tuple (1,)
在 Python 3 中,带有*
前缀的目标变量可以用作 catch-all 变量(请参阅解包 Iterables ):
Python 3.x >= 3.0
first, *more, last = (1, 2, 3, 4, 5)
# first == 1
# more == [2, 3, 4]
# last == 5