python - 我怎么能在列表理解中重写这个 for 循环

标签 python python-2.7 for-loop list-comprehension

我有一个像这样的“for 循环”:

for dirctory in dirs:
    for item in os.walk(dirctory):
        for i in item[2]:
            i = os.path.join(item[0], i)
            if is_image(i):
                images.append(i)

然后我尝试将其重写为列表理解,我试过这个:

images.extend(filter(is_image, [item[0]+i for i in item[2] for item in os.walk(dirctory)]))

它说 UnboundLocalError: 赋值前引用了局部变量 'item'

所以我尝试了这个:

images.extend(filter(is_image, [(item[0]+i for i in item[2]) for item in os.walk(dirctory)]))

它说 TypeError: coercing to Unicode: need string or buffer, generator found

我在 OS X 中使用 Python 2.7.4。

最佳答案

试试这个:

[os.path.join(item[0], i) for directory in dirs for item in os.walk(dirctory) for i in item[2] if is_image(os.path.join(item[0], i))]

关于python - 我怎么能在列表理解中重写这个 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878491/

相关文章:

r - 如何在 R 中的回归模型中循环公式

python - 只保留一个条目而不是 append 到字典

Python 用一个公共(public)列连接两个框架

python - 如何在odoo 9中创建自动增量字段

c++ - 为什么我的程序有时只能正确识别数组中的最高值和最低值?

c++ - 如何显示两个字符而不是一个?

python - 比较两个不同大小的一维数组中的元素,具有公差

python - Airflow - Kubernetes Executor : How to only mount only a directory of a Persistent Volume Claim that correspond to the run_id

python - Django 获取外键整个对象而不仅仅是 id(主键)

python - 如何在 python 中删除行 CSV