Python 2元组/列表解压缩使用star throws SyntaxError

时间:2014-03-07 18:30:25

标签: python-2.7 iterable-unpacking

为什么以下代码在Python 2.7.3中为SyntaxError抛出*phones

contact = ('name', 'email', 'phone1', 'phone2')
name, email, *phones = contact

这是在Python 3中引入的,而不是向后移植的吗?如何在Python 2中使用它?也就是说,如果没有一些微不足道的方法来解决问题。

1 个答案:

答案 0 :(得分:3)

Yup,扩展的解包语法(使用*来完成其余部分)仅限Python 3.x. Python 2.x中最接近的是从余数中明确切片所需的部分:

contact = ('name', 'email', 'phone1', 'phone2')
(name, email), phones = contact[:2], contact[2:]

如果你需要它来处理任意迭代,那么你可以使用类似的东西:

from itertools import islice
i = iter(contact)
(name, email), phone = tuple(islice(i, 2)), list(i)