簡體   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