使用列表理解或嵌套循环更有效吗? [重复]

问题描述 投票:0回答:1

如果你拿代码:

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)

对不起,如果答案很明显,我之前从未考虑过程序中的效率。任何解释将非常感谢:)

python python-3.x list for-loop
1个回答
1
投票

与任何有关效率的问题一样,唯一真正的答案是分析您的代码,因为它总是取决于。

也就是说,for循环和列表推导之间应该没有明显的区别(它们很可能编译成相同的字节代码),你应该使用最可读的东西。在这种情况下,我会说嵌套的for循环比嵌套的理解更具可读性。

© www.soinside.com 2019 - 2024. All rights reserved.