如果你拿代码:
import os
directory = [files for root, dirs, files in os.walk(".")]
imgs = [file[0] for file in [[directory[x][y] for y,file in enumerate(dirs) if file.split('.')[1] == "png"] for x,dirs in enumerate(directory)] if len(file) != 0]
这是四个循环查找目录中的所有.png文件并从结果创建列表。我的问题是:严格来说代码的效率,这会比以下更高效还是更低效:
import os
imgs = []
directory = []
for root,dirs,file in os.walk("."):
directory.append(file)
for x,dirs in enumerate(directory):
for y,file in enumerate(dirs):
if file.split('.')[1] == "png":
imgs.append(file)
对不起,如果答案很明显,我之前从未考虑过程序中的效率。任何解释将非常感谢:)
与任何有关效率的问题一样,唯一真正的答案是分析您的代码,因为它总是取决于。
也就是说,for循环和列表推导之间应该没有明显的区别(它们很可能编译成相同的字节代码),你应该使用最可读的东西。在这种情况下,我会说嵌套的for循环比嵌套的理解更具可读性。