《Python数据结构与算法分析》(第二版)
比较四种列表生成方式的性能:
import timeit
'''
四种不同的生成列表方法
'''
def test1():# 连接法
l = []
for i in range(1000):
l = l + [i]
def test2():# 追加法
l = []
for i in range(1000):
l.append(i)
def test3():# 列表解析式法
l = [i for i in range(1000)]
def test4():# 列表构造器法
l = list(range(1000))
'''
使用Python的timeit模块,测试每个函数的执行时间,默认情况下,timeit会执行100万次语句
'''
#创建Timer对象, 要使用timeit模块,首先创建一个Timer对象
t1 = timeit.Timer("test1()", "from __main__ import test1")# 第一个参数是要为之计时的Python语句,第二个参数是建立测试的语句
print("concat ", t1.timeit(number=1000), "milliseconds")# 执行100万次所用的秒数,可以视作执行一次所用的微秒数
t2 = timeit.Timer("test2()", "from __main__ import test2")
print("append ", t2.timeit(number=1000), "milliseconds")
t3 = timeit.Timer("test3()", "from __main__ import test3")
print("comprehension ", t3.timeit(number=1000), "milliseconds")
t4 = timeit.Timer("test4()", "from __main__ import test4")
print("list range ", t4.timeit(number=1000), "milliseconds")
运行结果:
说明:执行时间其实包含了调用测试函数的额外开销,但可以假设四种情形的函数调用开销相同