python – 列表理解中的双重迭代

在Python中,你可以在列表推导中有多个迭代器,比如

[(x,y) for x in a for y in b]

对于一些合适的序列a和b。我知道Python的列表推导的嵌套循环语义。

我的问题是:一个迭代器在理解中引用另一个?换句话说:我可能有这样的东西:

[x for x in a for a in b]

其中外层循环的当前值是内层的迭代器?

例如,如果我有一个嵌套列表:

a=[[1,2],[3,4]]

列表解释表达式是什么将实现这个结果:

[1,2,3,4]

?? (请只列出理解答案,因为这是我想知道的)。

用你自己的建议回答你的问题:

>>> [x for b in a for x in b] # Works fine

当你请求列表解析答案时,让我也指出了优秀的itertools.chain():

>>> from itertools import chain
>>> list(chain.from_iterable(a))
>>> list(chain(*a)) # If you're using python < 2.6
http://stackoverflow.com/questions/1198777/double-iteration-in-list-comprehension

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 列表理解中的双重迭代