繁体   English   中英

如何使用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'),...]}

列表推导式的编写顺序与 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)

这将创建一个具有所需属性的生成器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM