Skip to main content
 首页 » 编程设计

python之从 iterable 中解包元素会产生 SyntaxError

2025年05月04日36kevingrace

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