如何在 python 中使用生成器制作嵌套 for 循环?
How to make a nested for loop using a generator in python?
我正在尝试转换这个嵌套的 for 循环:
for k,v in all_R.iteritems():
for pairs in v:
print pairs[1]
一个班轮,像这样:
print ([pairs[1] for pairs in v for k,v in all_R.iteritems()])
但是我收到这个错误:
UnboundLocalError: local variable 'v' referenced before assignment
all_R 是一个 defaultdict,其中每个值都有成对的键,我只对那对中的一个值感兴趣:
{'1-0002': [('A-75G', 'dnaN'), ('I245T', 'recF'),... ], '1-0004': [('A-75G', 'dnaN'), ('L161', 'dnaN'),...]}
List comprehensions 的编写顺序与 for 循环相同,所以你实际上是在寻找(注意顺序是相反的)
([pairs[1] for k,v in all_R.iteritems() for pairs in v ])
下面是更清楚地显示结构的分解:
[
pairs[1]
for k,v in all_R.iteritems()
for pairs in v
]
如果您希望如标题所示使用生成器,则可以使用圆括号代替方括号。
(pairs[1] for k,v in all_R.iteritems() for pairs in v)
这将创建一个具有您所需属性的生成器。
我正在尝试转换这个嵌套的 for 循环:
for k,v in all_R.iteritems():
for pairs in v:
print pairs[1]
一个班轮,像这样:
print ([pairs[1] for pairs in v for k,v in all_R.iteritems()])
但是我收到这个错误:
UnboundLocalError: local variable 'v' referenced before assignment
all_R 是一个 defaultdict,其中每个值都有成对的键,我只对那对中的一个值感兴趣:
{'1-0002': [('A-75G', 'dnaN'), ('I245T', 'recF'),... ], '1-0004': [('A-75G', 'dnaN'), ('L161', 'dnaN'),...]}
List comprehensions 的编写顺序与 for 循环相同,所以你实际上是在寻找(注意顺序是相反的)
([pairs[1] for k,v in all_R.iteritems() for pairs in v ])
下面是更清楚地显示结构的分解:
[
pairs[1]
for k,v in all_R.iteritems()
for pairs in v
]
如果您希望如标题所示使用生成器,则可以使用圆括号代替方括号。
(pairs[1] for k,v in all_R.iteritems() for pairs in v)
这将创建一个具有您所需属性的生成器。