为了账号安全,请及时绑定邮箱和手机立即绑定

列表理解中的双重迭代

列表理解中的双重迭代

富国沪深 2019-10-05 13:44:42
在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]?? (请只列出理解答案,因为这是我要查找的内容)。
查看完整描述

4 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我希望这对别人a,b,x,y有帮助,因为对我没有太大的意义!假设您有一个充满句子的文本,并且想要一个单词数组。


# Without list comprehension

list_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)

Hi

Steve!

What's

up?


查看完整回答
反对 回复 2019-10-05
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

e,我想我找到了答案:我对那个循环是内部的,哪个循环是外部的,没有足够的小心。列表理解应为:


[x for b in a for x in b]

为了获得期望的结果,是的,一个当前值可以作为下一个循环的迭代器。


查看完整回答
反对 回复 2019-10-05
  • 4 回答
  • 0 关注
  • 491 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信