繁体   English   中英

为什么不能在列表推导式中解压列表?

[英]Why is it not possible to unpack lists inside a list comprehension?

在列表或生成器理解中使用时,带星号的表达式会引发SyntaxError

我很好奇这背后的原因; 它是一种实现选择还是存在阻止此操作的技术限制?

我发现了很多关于不允许解包迭代的上下文,但没有说明原因。

例子:

lis = [1, 2, 3, 4, 5]
listcomp = [*lis for i in range(3)]

我想也许我可以用它来得到[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]结果,但它提高了

SyntaxError("可迭代解包不能用于理解中")

这是在PEP 448 - Additional Unpacking Generalizations 中提出的,但由于担心可读性而最终未被接受:

此 PEP 的早期迭代允许将列表、集合和字典推导式中的运算符解包为容器可迭代对象上的展平运算符:[...]
这遇到了对可读性和温和支持的强烈关注。 为了不损害 PEP 中争议较少的方面,提案的其余部分没有接受这一点。

值得注意的是,不排除稍后添加此内容的可能性。

此 PEP 不包括列表、集合和字典推导式中的解包运算符,尽管这在未来的提案中并未被排除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM