big_list = list('big data')
for one in all_data:
time_a = time.time()
if one not in set(big_list) :
print('the time is', time.time()-time_a)
結果發現每個if判斷的時間爲0.03s, 如果for循環數據很大的話,將很浪費時間,1000次,30s。
開始思考,python
的查找邏輯,在一個集合中查找一個數,應該是一條一條的匹配驗證。
如果想要快速查找,應該將集合轉化爲列表,並進行排序,才能快速查找。
然後便開始研究python
的in
的查找邏輯是怎樣的。
然後發現set
和dict
是哈希查找,速度很快的。
哈希查找
自己之前開發沒有深入理解呢。知其然不知其所以然。
那爲什麼慢呢?
突然想到,將列表變爲集合是耗時間的吧,因此單獨測試了將列表轉爲集合的時間,發現爲0.03s,然後發現問題,不能在if
(for
循環)判斷中進行set
操作,太重複了,浪費時間。
以上。