我有一个像这样的“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/