В следващите тривиални примери има две функции, които сортират списък от произволни числа. Първият метод предава sorted
генераторен израз, вторият метод създава списък първо:
import random
l = [int(1000*random.random()) for i in xrange(10*6)]
def sort_with_generator():
return sorted(a for a in l)
def sort_with_list():
return sorted([a for a in l])
Сравнителният анализ с линеен профил показва, че втората опция (sort_with_list
) е около два пъти по-бърза от генераторния израз.
Може ли някой да обясни какво се случва и защо първият метод е много по-бавен от втория?
list(a for a in l)
срещу[a for a in l]
. Ето откъде идва разликата. Последният е по-бърз със същата разлика, както когато използвате sorted. - person flornquake   schedule 06.09.2013