为什么* x,在Python 3中解压缩映射对象?
在Python 3中,以下内容返回一个地图对象:
map(lambda x: x**2, range(10))
如果我们想把这个对象变成一个列表,我们可以使用list(mapobject)
将它转换为列表。 不过,我通过代码打高尔夫发现了这一点
*x, = mapobject
使x成为一个列表。 为什么在Python 3中允许这样做?
这是PEP 3132引入Python 3的扩展迭代解包的一个例子:
这个PEP建议更改为可迭代的解包语法,允许指定一个“全部收集”名称,该名称将被分配一个未分配给“常规”名称的所有项目的列表。
一个例子说超过一千字:
>>> a, *b, c = range(5)
>>> a
0
>>> c
4
>>> b
[1, 2, 3]
和往常一样,Python中的单例元组使用尾随逗号来表示,以便扩展它的等价物:
>>> x, = [1]
>>> x
1
… 这是:
>>> *x, = range(3)
>>> x
[0, 1, 2]
链接地址: http://www.djcxy.com/p/53565.html