python数据结构_(列表)大O性能_学习笔记(2)

1.列表

1)一般列表操作命令的复杂度(准确来说是函数的复杂度)

在这里插入图片描述

2)时间计算(timeit模块和Timer对象)

要捕获我们的每个函数执行所需的时间,我们将使用 Python 的 timeit 模块。timeit 模块旨在 允许 Python 开发人员通过在一致的环境中运行函数并使用尽可能相似的操作系统的时序机制 来进行跨平台时序测量。 要使用 timeit,你需要创建一个 Timer 对象,其参数是两个 Python 语句。第一个参数是一个 你想要执行时间的 Python 语句; 第二个参数是一个将运行一次以设置测试的语句。然后 timeit 模块将计算执行语句所需的时间。默认情况下,timeit 将尝试运行语句一百万次。 当它完成列表 时,它返回时间作为表示总秒数的浮点值。由于它执行语句一百万次,可以读取结果作为执 行测试一次的微秒数。你还可以传递 timeit 一个参数名字为 number,允许你指定执行测试语 句的次数。以下显示了运行我们的每个测试功能 1000 次需要多长时间。

#注:from __main__ import test1表示从当前环境导入test1函数到timeit环境中
t1 = Timer("test()","from __main__ import test")
print("contact" ,t1.timeit(number=1000),"ms")
#指定测试函数test的次数是1000次,返回的结果可以当成测试一次所需要的时间,单位为毫秒

在这里插入图片描述

3)知识点

#创建Timer对象
t1 = Timer("需要测试的函数",“从本地导入需要测试的函数”)
#使用timeit模块对函数进行测试,测试为一千次,返回的是秒数,可以理解为测试一次的毫秒数。1s = 1000ms
print(t1.timeit(number = 1000))

4)列表操作及性能

创建列表(4种方式)

#方式一:拼接
def test1():
	l = []
	for i in range(100000):
		l = l + [i]

#方式二:append()方法
def test2():
	l = []
	for i in range(1000000):
		l.append(i)

#方式三:创建列表生成器
def test3():
	l = [i for i in range(1000000)]

#方式四:构造包装列表的函数
def test4():
	l = list(range(1000000))

上面的四种方法,其复杂程度依次减小,执行时间缩短

发布了39 篇原创文章 · 获赞 11 · 访问量 410

猜你喜欢

转载自blog.csdn.net/qq_45769063/article/details/104918368
今日推荐