猿问

列表理解中的双重迭代

在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]

?? (请只列出理解答案,因为这是我要查找的内容)。


富国沪深
浏览 492回答 4
4回答

慕标琳琳

我希望这对别人a,b,x,y有帮助,因为对我没有太大的意义!假设您有一个充满句子的文本,并且想要一个单词数组。# Without list comprehensionlist_of_words = []for sentence in text:    for word in sentence:       list_of_words.append(word)return list_of_words我喜欢将列表理解理解为水平扩展代码。尝试将其分解为:# List Comprehension [word for sentence in text for word in sentence]例:>>> text = (("Hi", "Steve!"), ("What's", "up?"))>>> [word for sentence in text for word in sentence]['Hi', 'Steve!', "What's", 'up?']这也适用于发电机>>> text = (("Hi", "Steve!"), ("What's", "up?"))>>> gen = (word for sentence in text for word in sentence)>>> for word in gen: print(word)HiSteve!What'sup?

有只小跳蛙

e,我想我找到了答案:我对那个循环是内部的,哪个循环是外部的,没有足够的小心。列表理解应为:[x for b in a for x in b]为了获得期望的结果,是的,一个当前值可以作为下一个循环的迭代器。
随时随地看视频慕课网APP

相关分类

Python
我要回答