bar*_*ios 2 python-2.7 iterable-unpacking
为什么以下代码会在 Python 2.7.3 中抛出SyntaxErrorfor *phones?
contact = ('name', 'email', 'phone1', 'phone2')
name, email, *phones = contact
Run Code Online (Sandbox Code Playgroud)
这是在 Python 3 中引入的而不是向后移植的吗?我怎样才能让它在 Python 2 中工作?也就是说,如果这里没有一些简单的方法可以解决问题。
是的,扩展解包语法(*用于处理其余部分)仅适用于 Python 3.x。您在 Python 2.x 中可以获得的最接近的是从剩余部分中明确地切片您想要的部分:
contact = ('name', 'email', 'phone1', 'phone2')
(name, email), phones = contact[:2], contact[2:]
Run Code Online (Sandbox Code Playgroud)
如果您需要它来处理任意可迭代对象,那么您可以使用以下内容:
from itertools import islice
i = iter(contact)
(name, email), phone = tuple(islice(i, 2)), list(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |