>>> LOL = [[1, 2], ['three']]
>>> [*LOL[0], *LOL[1]]
[1, 2, 'three']
好的!再见itertools.chain . 反正从来没有喜欢过你 .
>>> [*L for L in LOL]
File "<ipython-input-21-e86d2c09c33f>", line 1
[*L for L in LOL]
^
SyntaxError: iterable unpacking cannot be used in comprehension
Oh . 为什么我们不能拥有美好的东西?
理解中的解包似乎很明显/ pythonic,但由于他们不愿意添加该特殊错误消息,因此有理由禁用它 . 那么,该语法有什么问题?
2 回答
这在PEP 448中简要解释,它引入了解包的概括:
但是,这可能会在未来发生变化:
引自the Py-Dev mailing list thread in which this feature was accepted:
(强调我的)
我还看了一下这个功能的Python问题跟踪器 . 我发现了一个在实施过程中进行讨论的问题 . 帮助他们实现这一目标的消息序列开始于here,其中很好地概述了GvR在msg234766中介绍的歧义 .
由于害怕链接腐烂,我在这里附加(格式化)消息:
最后,如the Abstract section of the corresponding PEP所述,此功能并未完全排除:
所以,我们可能很快就会看到它(绝对不是3.6,但是:-)而且我希望我们这样做,它们看起来不错 .