1-06python列表类型不同操作的时间效率
文章目录
timeit模块
timeit模块可以用来测试一小段Python代码的执行速度。
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
Timer是测量小段代码执行速度的类。
stmt参数是要测试的代码语句(statment);
setup参数是运行代码时需要的设置;
timer参数是一个定时器函数,与平台有关。
timeit.Timer.timeit(number=1000000)
Timer类中测试语句执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的平均耗时,一个float类型的秒数。
list的操作测试-列表的相加、列表生成器、直接变成列表、用append函数、用extend函数
import timeit
from timeit import Timer
# 思路
# # 第一种:列表的相加
# li1 = [1,2]
# li2 = [23,5]
# li = li1+li2
# # 第二种:列表生成器
# li = [i for i in range(10000)]
# # 第三种:直接变成列表
# li = list(range(10000))
# # 第四种:用append函数
# for i in range(10000):
# li.append(i)
# # 第五种:用extend函数
# for i in range(10000):
# li.extend([i])
# # 第一种:列表的相加
def test1():
li = []
for i in range(10000):
li += [i]
# # 第二种:列表生成器
def test2():
li = [i for i in range(10000)]
# # 第三种:直接变成列表
def test3():
li = list(range(10000))
# # 第四种:用append函数
def test4():
li = []
for i in range(10000):
li.append(i)
# # 第五种:用extend函数
def test5():
li = []
for i in range(10000):
li.extend([i])
# 测试第1个
timer1 = Timer("test1()", "from __main__ import test1")
# timer1.timeit(1000)
print("列表的相加:", timer1.timeit(1000))
# 测试第2个
timer2 = Timer("test2()", "from __main__ import test2")
# timer2.timeit(1000)
print("列表生成器:", timer2.timeit(1000))
# 测试第3个
timer3 = Timer("test3()", "from __main__ import test3")
# timer3.timeit(1000)
print("直接变成列表:", timer3.timeit(1000))
# 测试第4个
timer4 = Timer("test4()", "from __main__ import test4")
# timer4.timeit(1000)
print("用append函数:", timer4.timeit(1000))
# 测试第5个
timer5 = Timer("test5()", "from __main__ import test5")
# timer5.timeit(1000)
print("用extend函数:", timer5.timeit(1000))
测试列表的相加、列表生成器、直接变成列表、用append函数、用extend函数的效率的结果
测试append和insert列表操作的时间效率
代码:
import timeit
from timeit import Timer
def test6():
li = []
for i in range(10000):
li.append(i)#始终从列表尾部追加
def test7():
li = []
for i in range(10000):
li.insert(0,i)#0表示始终从列表头部追加上i的值
# 测试始终从列表尾部追加的append(i)
timer6 = Timer("test6()", "from __main__ import test6")
print("始终从列表尾部追加的append(i):", timer6.timeit(1000))
# 测试始终从列表头部追加的insert(0,i)
timer7 = Timer("test7()", "from __main__ import test7")
print("始终从列表头部追加的insert(0,i):", timer7.timeit(1000))
结果:
由于数据的存储方式!!!数据结构中会说到
list内置操作的时间复杂度
list操作
dict内置操作的时间复杂度
dict操作