为什么* 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

上一篇: Why does *x, unpack map objects in python 3?

下一篇: Finds all rows fitting to combinatorial condition