在搜索了如何仅在python中返回顶级文件夹的路径之后,我发现了两种截然不同的方法似乎返回相同的结果:
def listTopDirs(folder):
return [name for name in (os.path.join(folder, each) for each in os.listdir(folder)) if os.path.isdir(name)]
Vs以上。
def listTopDirs():
return [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]
当我在我的机器上试用它们时,它们会返回相同数量的结果。
要么被认为更加pythonic?使用一个比另一个算法有什么算法优势吗?
答案 0 :(得分:1)
虽然第二个片段对我来说似乎更像Pythonic,但快速测试证明第一个片段更快。我在下面发布了结果。
def listTopDirs(folder):
return [name for name in (os.path.join(folder, each) for each in os.listdir(folder)) if os.path.isdir(name)]
$ python -m timeit 'import os;r = [name for name in (os.path.join(".", each) for each in os.listdir(".")) if os.path.isdir(name)]'
100 loops, best of 3: 2.59 msec per loop
100 loops, best of 3: 2.60 msec per loop
def listTopDirs():
return [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]
$ python -m timeit 'import os;r = [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]'
100 loops, best of 3: 4.54 msec per loop
100 loops, best of 3: 4.54 msec per loop