我有一個函數,unique(a)
需要一個數字列表,a
,並且只返回每個值中的一個。同時,它維護列表的順序。我還有一個功能,big_list(n)
生成len(n)
的列表。Python - 大列表效率
爲什麼我改變列表的方向的原因是,當刪除值時,它將它們從原始列表的後面刪除,以便使修改列表在與原始列表進行比較時更加乾淨和易讀。
該函數在我創建的列表的長度相對較小時起作用,但是當我獲得更大的長度時,例如ex爲1,000,000,則執行時間爲FOREVER。
如果任何人都可以通過使我的功能快很多來幫助我,那會很棒!
僅供參考:我需要在函數的某個地方爲我正在處理的任務使用一個集合。我仍然需要從後面刪除列表項。
提前致謝!
def big_list(n) :
# Create a list of n 'random' values in the range [-n/2,n/2]
return [ randrange(-n//2, n//2) for i in range(n) ]
def unique(a) :
a = a[::-1]
b = set(a)
for i in b :
while a.count(i) != 1 :
a.remove(i)
a.count(i)
a = a[::-1]
return a
設置已經是唯一的。它不會包含重複項。即x = set(big_list(10k)),x將不會有重複。 – Claris 2014-10-06 21:46:42
是不是它使時間複雜性成爲最糟糕的例子? – 2014-10-06 21:47:35