我在Python 2.7.6中尝试以下内容:
a = (1,2,3,4,5)
item, *rem = a
并获取
SyntaxError: invalid syntax
它显然适用于Python 3.
我如何在Python 2中模仿这种行为?
答案 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转换为序列,以满足该要求。