python常用的数据结构运行效率分析

1.while循环和for循环相同条件下的运行效率比较:

如下代码:

 1 import time as tm
 2 import timeit as tt
 3 import random as rm
 4 
 5 def while_time():
 6     i = 0
 7     while i < 100000001:
 8         i += 1
 9         if i > 100000:
10             break
11     return i
12 
13 
14 def for_time():
15     j = 0
16     for i in range(100000001):
17         j += 1
18         if j > 100000:
19             break
20     return j
21 
22 if __name__ == "__main__":
23     t1 = tt.Timer("for_time()", "from __main__ import for_time")
24         print(t1.timeit(number=10))
25         t2 = tt.Timer("while_time()", "from __main__ import while_time")
26         print(t2.timeit(number=10))

结果:

说明:如上结果,for循环和while循环的时间复杂度都是T(n)=5*n+1,但是for循环的效率比while循环稍高。

 

2.遍历列表、元组、集合的效率比较:
如下代码:

 1 def list_time():
 2     for i in list1:
 3     i += 1
 4 
 5 
 6 def tuple_time():
 7     for i in tp1:
 8     i += 1
 9 
10 
11 def set_time():
12     for i in set1:
13     i += 1
14 
15 def main():
16     list1 = list(range(30000000))
17     tp1 = tuple(list1)
18     set1 = set(list1)
19     t1 = tt.Timer("list_time()", "from __main__ import list_time")
20     print(t1.timeit(number=10))
21     t2 = tt.Timer("tuple_time()", "from __main__ import tuple_time")
22     print(t2.timeit(number=10))
23     t3 = tt.Timer("set_time()", "from __main__ import set_time")
24     print(t3.timeit(number=10))
25 if __name__ == "__main__":
26     main()

结果:


说明:三个函数的查找的时间复杂度都为O(n),列表和元组的遍历效率差不多,集合遍历的效率稍低。

posted @ 2017-09-02 23:04  倥偬时光  阅读(1494)  评论(0编辑  收藏  举报