如何在python中使用生成器创建嵌套for循环?

时间:2016-10-14 22:39:19

标签: python syntax nested generator bioinformatics

我正在尝试转换此嵌套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'),...]}

1 个答案:

答案 0 :(得分:3)

列表推导以与循环相同的顺序编写,因此您实际上在寻找(注意订单是相反的) print ([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)

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