基礎知識詳解:python( list,set,dict)大規模查找效率對比

前言:

這篇文章主要介紹了基礎知識詳解:python( list, set,dict)大規模查找效率對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下。

很多時候我們可能要頻繁的進行元素的find 或in操作,本人一直天真的以為python的list做了hash,通過紅黑樹來高效查找···直到今天我真正來測試它和set,dict的查找效率時,才發現自己想太多了!!!!

先看代碼:

基礎知識詳解:python( list,set,dict)大規模查找效率對比

結果:

set: 0.01762632617301519

dict: 0.021149536796960248

······

···

··

···list等了20分鐘都沒出結果。

所以···結果一覽無餘啊。

查找效率:set>dict>list

單次查詢中:看來list 就是O(n)的;而set做了去重,本質應該一顆紅黑樹(猜測,STL就是紅黑樹),複雜度O(logn);dict類似對key進行了hash,然後再對hash生成一個紅黑樹進行查找,其查找複雜其實是O(logn),並不是所謂的O(1)。

O(1)只是理想的實現,實際上很多hash的實現是進行了離散化的。dict比set多了一步hash的過程,so 它比set慢,不過差別不大。

so,如果是要頻繁的查找,請使用set吧!

以上就是本文的全部內容,希望對大家的學習有所幫助。

最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“07”即可領取。


分享到:


相關文章: