import timeit # # li = [] # for i in range(1000): # li += [i] # # # 第二种操作 列表生成器 # li = [i for i in range(1000)] # # 第三种 通过list方法转换成列表 # li = list(range(1000)) # # 第四种 通过遍历range(n),再向空列表中添加元素的方法 # li = [] # for i in range(1000): # li.append(i) import pprint import timeit def t1(): li = [] for i in range(10000): li.append(i) def t2(): for i in range(1000): li += [i] def t3(): [i for i in range(1000)] def t4(): li = list(range(1000)) timer1 = timeit.timeit(stmt = t1, number = 1000) pprint.pprint(timer1) print("append:", timer1) #list内置操作的时间复杂度 *index[] O(1) 索引是一步就能获取的 *append O(1) 从后面加一个数值 pop() O(1) 默认从尾部删除一个元素并输出(根据索引) *pop(i) O(n) 从指定位置开始删除某个元素并输出,如果是从头部删除的话,后面每个元素都要往前移一位(根据索引) *insert(i, item) O(n) *contains(in) O(n) #查找是否在列表当中,遍历一遍才知道是不是在其中 get slice[x, y] O(k) #k为x,y之间的差值 del slice O(n) #切一段位置后,其他的元素要移位补空位 set slice O(n+k) #设置切片:先删除部分切片你(n),再把要放入的元素插进去(k) reversed() O(n) concatenate O(k) 第二个列表的元素(n)加到第一个上去 multiply O(nk)#dict内置操作的时间复杂度iteration O(n)
利用timeit模快测试代码运型速度
最新推荐文章于 2022-09-07 10:33:03 发布