Python设计者在实现数据列表结构的时候有多种选择,每种选择都会直接影响列表操作的性能。常见的列表操作是增加一个列表,并向其添加元素。下面介绍常见的四种列表构造方法。
分别为:列表拼接、append方法、列表生成器、list( range)
为了比较四种列表构造方法的性能,需要利用python的timeit模块中Timer
Timer: 定时器,能使函数运行指定次数,并返回测试时间。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import timeit
#列表拼接:
def test1():
l = []
for i in range(1000):
l = l + [i]
#append添加:
def test2():
l = []
for i in range(1000):
l.append(i)
#列表生成式:
def test3():
l = [i for i in range(1000)]
#list range:
def test4():
l = list(range(1000))
#计算每个函数测试1000次所需要时间:
t1 = timeit.Timer('test1()', 'from __main__ import test1')
print('concat ', t1.timeit(number=1000), 'millseconds')
t2 = timeit.Timer('test2()', 'from __main__ import test2')
print('append', t2.timeit(number=1000), 'millseconds')
t3 = timeit.Timer('test3()', 'from __main__ import test3')
print('comprehension ', t3.timeit(number=1000), 'millseconds')
t4 = timeit.Timer('test4()', 'from __main__ import test4')
print('list range ', t4.timeit(number=1000), 'millseconds')
'''
concat 3.3679623384490145 millseconds
append 0.1141254175470392 millseconds
comprehension 0.05144768306391789 millseconds
list range 0.02158844989451536 millseconds
'''
评定:
从上面的测试实验可以看出,列表拼接时最慢的,append方法比其快得多,最快的是列表生成器和list range 然而,日常编程任务多为通过列表构建或筛选指定元素,因而 append 和List comprehension 应优先使用。