复杂度

  1. python 内置类型性能分析python 内置类型性能分析
    1. list 内置操作的时间复杂度
    2. timeit模块

python 内置类型性能分析python 内置类型性能分析

list 内置操作的时间复杂度

1
2
3
4
5
6
7
index[x] 						取值		O(1)
index assignment 赋值 O(1)
append 尾部追加 O(1)
pop 尾部弹出 O(1)
pop(i) 指定位置弹出 O(n)
insert(i , item) 指定位置插入 O(n)
del operater O(n)

timeit模块

timeit模块可以用来测试一小段Python代码的执行速度

class timeit.Timer(stmt=’pass’, setup=’pass’, timer=)

Timer 是测量小段代码执行速度的类。
stmt参数是要测试的代码语句(statement)
setup参数是运行代码需要的的设置
timer参数是一个定时器函数,与平台有关

timeit.Timer.timeit(number=1000000)

Timer类中测试语句的执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次,方法返回执行飞马的平均耗时,一个float类型的秒数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from timeit import Timer


def t1():
li = []
for i in range(1000):
li.append(i)


def t2():
li = []
for i in range(1000):
li = li + [i]


# 列表生成器
def t3():
li = [i for i in range(1000)]


# 类型转换
def t4():
li = list(range(1000))


# 与+不一样
def t5():
li = []
for i in range(1000):
li.extend([i])


# 与append对比头部尾部添加
def t6():
li = []
for i in range(1000):
li.insert(0, 1)


timer1 = Timer("t1()", "from __main__ import t1")
print("append:", timer1.timeit(1000))

timer2 = Timer("t2()", "from __main__ import t2")
print("+:", timer2.timeit(1000))

timer3 = Timer("t3()", "from __main__ import t3")
print("[i for i in range]:", timer3.timeit(1000))

timer4 = Timer("t4()", "from __main__ import t4")
print("list(range()):", timer4.timeit(1000))

timer5 = Timer("t5()", "from __main__ import t5")
print("extend:", timer5.timeit(1000))

timer6 = Timer("t6()", "from __main__ import t6")
print("insert[0]:", timer6.timeit(1000))

运行结果

1
2
3
4
5
6
append: 0.07670579999999999
+: 3.3817863
[i for i in range]: 0.06815369999999987
list(range()): 0.027385799999999794
extend: 0.20605129999999994
insert: 0.7449211

转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至gxnucgb@qq.com

文章标题:复杂度

文章字数:412

本文作者:陈桂彬

发布时间:2019-08-09, 20:35:59

最后更新:2019-08-10, 15:05:13

原始链接:https://github.com/gxnucgb/gxnucgb.github.io/2019/08/09/复杂度/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github