从 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() 将可迭代对象转换为序列以满足该要求。