在以下简单示例中,有两个函数对随机数列表进行排序。第一个方法传递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])
使用line profiler进行基准测试表明,第二个选项 ( sort_with_list
) 的速度大约是生成器表达式的两倍。
谁能解释发生了什么,为什么第一种方法比第二种方法慢得多?