从iterable解包元素会产生SyntaxError

时间:2015-08-10 12:50:18

标签: python python-2.7 python-3.x variable-assignment

我在Python 2.7.6中尝试以下内容:

a = (1,2,3,4,5)
item, *rem = a

并获取

SyntaxError: invalid syntax

它显然适用于Python 3.

我如何在Python 2中模仿这种行为?

1 个答案:

答案 0 :(得分:5)

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()将iterable转换为序列,以满足该要求。