python - 如何在 python 中使用生成器制作嵌套 for 循环?

标签 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'),...]}

最佳答案

List comprehension 的写法和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)

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

关于python - 如何在 python 中使用生成器制作嵌套 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052968/

相关文章:

python - 如何使用正则表达式中的变量来计算平均值

Vim 语法 iskeyword 命令添加 @ 符号

ruby - 在 ruby​​ 方法中使用问号

templates - Handlebars - 嵌套模板

python - 在 Python 中使用 cPickle 导入错误

Python列表差异

elasticsearch - 通过自定义参数进行ElasticSearch无痛脚本过滤

arrays - 如何提高 Julia 中嵌套数组的速度?

python - 在 OpenCV2 中找到最接近图像中心的轮廓

python - pandas dataframe 对列进行排序会引发索引上的 keyerror