San*_*wal 4 python python-3.x iterable-unpacking
在Python 3中,以下内容返回一个map对象:
map(lambda x: x**2, range(10))
Run Code Online (Sandbox Code Playgroud)
如果我们想将此对象转换为列表,我们可以使用将其转换为列表list(mapobject).但是,我通过代码高尔夫发现了这一点
*x, = mapobject
Run Code Online (Sandbox Code Playgroud)
使x成为一个列表.为什么在Python 3中允许这样做?
这是PEP 3132引入Python 3的扩展可迭代解包的示例:
此PEP建议更改可迭代解包语法,允许指定"catch-all"名称,该名称将分配未分配给"常规"名称的所有项目的列表.
一个例子说超过一千个字:
Run Code Online (Sandbox Code Playgroud)>>> a, *b, c = range(5) >>> a 0 >>> c 4 >>> b [1, 2, 3]
像往常一样在Python中,使用尾随逗号表示单例元组,因此扩展等效于:
>>> x, = [1]
>>> x
1
Run Code Online (Sandbox Code Playgroud)
… 这是:
>>> *x, = range(3)
>>> x
[0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |