包装和拆包元组

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