#2.1 设计一个实验,证明列表的索引操作为常数阶。
- from timeit import Timer
- import random
- import numpy as np
- from matplotlib import pyplot as plt
- a = []
- b = []
- # 要证明这一点,需要看看两个操作在各个列表长度下的性能
- popzero = Timer("x[200]","from __main__ import x")
- # 测x[200]这个代码性能
- # "from __main__ import x" 将x引入到timeit的计时命名空间
- for i in range(1000000,100000001,1000000):
- b.append(i) # 横轴
- x=list(range(i)) #生成不同长度的列表
- w=popzero.timeit(1000) #让其执行1000次得到的总时间数
- a.append(w)
-
- plt.figure(figsize=(100,20))
- plt.plot(b,a,'r.-',linewidth=2,ms=5)
- my_x_ticks = np.arange(b[0],b[-1],1000000)
- plt.xticks(my_x_ticks)
- plt.show()
#2.2 设计一个实验,证明字典的取值操作和赋值操作为常数阶。
- from timeit import Timer
- import random
- import numpy as np
- from matplotlib import pyplot as plt
- x1 = [] #用来存储x坐标
- y