从 iterable 中解包元素会产生 SyntaxError
Unpacking elements from iterable yields SyntaxError
我正在 Python 2.7.6 中尝试以下操作:
a = (1,2,3,4,5)
item, *rem = a
并获得
SyntaxError: invalid syntax
它显然适用于 Python 3.
如何在 Python 2 中模仿这种行为?
语法是 Python 3 中的新语法,所以是的,它会在 Python 2 中给出语法错误。
对于简单的单元素情况,您可以改用显式切片:
item, rem = a[0], a[1:]
对于具有多个分配的更复杂的设置,您可以将名称放在一个元组中以解包子序列,但您仍然需要切片。所以
item1, item2, *middle, item3 = sequence
变成
(item1, item2), middle, item3 = sequence[:2], sequence[2:-1], sequence[-1]
当然,这确实需要右侧的对象可以被切片;首先用 list()
将可迭代对象转换为序列以满足该要求。
我正在 Python 2.7.6 中尝试以下操作:
a = (1,2,3,4,5)
item, *rem = a
并获得
SyntaxError: invalid syntax
它显然适用于 Python 3.
如何在 Python 2 中模仿这种行为?
语法是 Python 3 中的新语法,所以是的,它会在 Python 2 中给出语法错误。
对于简单的单元素情况,您可以改用显式切片:
item, rem = a[0], a[1:]
对于具有多个分配的更复杂的设置,您可以将名称放在一个元组中以解包子序列,但您仍然需要切片。所以
item1, item2, *middle, item3 = sequence
变成
(item1, item2), middle, item3 = sequence[:2], sequence[2:-1], sequence[-1]
当然,这确实需要右侧的对象可以被切片;首先用 list()
将可迭代对象转换为序列以满足该要求。