Возвращение путей каталогов верхнего уровня в Python: сравнение двух решений - PullRequest
0 голосов
/ 29 февраля 2012

После некоторого поиска того, как возвращать пути к папкам верхнего уровня только в 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)]

Они возвращают одинаковое количество результатов для меня, когда я опробую их на моей машине.

Можно ли считать их более питоническими?Есть ли алгоритмическое преимущество использования одного над другим?

1 Ответ

1 голос
/ 29 февраля 2012

Хотя второй фрагмент кажется мне более 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...