import random import time def RandomNumber1(number ,start , end): data=[] n=0 while True: element=random.randint(start,end) if element not in data: data.append(element) n+=1 if n==number: break return data def RandomNumber2(number ,start , end): data=[] while True : element =random.randint(start,end) if element not in data: data.append(element) if len(data)==number: break return data def RandomNumber3(number ,start ,end): data = set() while True: data.add(random.randint(start,end)) if len(data)==number: break return data start =time.time() for i in range(500): RandomNumber1(1000,1,10000) print('time1 used = ',time.time()-start) start =time.time() for i in range(500): RandomNumber2(1000,1,10000) print('time2 used = ',time.time()-start) start =time.time() for i in range(500): RandomNumber3(1000,1,10000) print('time3 used = ',time.time()-start) """ time1 used = 16.99942398071289 time2 used = 17.33067297935486 time3 used = 3.3096442222595215 """
分析例題的:python
首先是len()函數的複雜度是O(1)app
緣由在於 在創造列表的同時默認在頭的位置設置了 len的變量,dom
當元素個數發生改變的時候,自動會改變。函數
集合set後綴函數 : .add( )code
若是使用 not in 至關於 逐個比較,很是慢,也至關於跑一遍列表。element
若是使用set,系統默認爲 元素 不重複,效率高。class