欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 中l(wèi)ist ,set,dict的大規(guī)模查找效率對比詳解

 更新時間:2019年10月11日 11:47:36   作者:Icoding_F2014  
這篇文章主要介紹了Python 中l(wèi)ist ,set,dict的大規(guī)模查找效率對比詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

先看代碼:

__author__ = 'jmh081701'
import numpy
import time
l=[]
sl=set()
dl=dict()
r=numpy.random.randint(0,10000000,100000)
for i in range(0,100000):
  l.append(r[i])
  sl.add(r[i])
  dl.setdefault(r[i],1)
#生成3種數(shù)據(jù)結構供查找,常規(guī)的list,集合sl,字典dl.里面的元素都是隨機生成的,為什么要隨機生成元素?這是防止某些結構對有序數(shù)據(jù)的偏向導致測試效果不客觀。

start=time.clock()
for i in range(100000):
  t=i in sl
end=time.clock()
print("set:",end-start)
#計算通過set來查找的效率
start=time.clock()
for i in range(100000):
  t=i in dl
end=time.clock()
print("dict:",end-start)
#計算通過dict的效率
start=time.clock()
for i in range(100000):
  t=i in l
end=time.clock()
print("list:",end-start)
#計算通過list的效率

結果:

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)只是理想的實現(xiàn),實際上很多hash的實現(xiàn)是進行了離散化的。dict比set多了一步hash的過程,so 它比set慢,不過差別不大。

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

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

相關文章

  • 詳解Python的多任務進程

    詳解Python的多任務進程

    這篇文章主要為大家介紹了Python的多任務進程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python分析apache訪問日志腳本分享

    python分析apache訪問日志腳本分享

    這篇文章主要介紹了python分析apache訪問日志腳本分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-02-02
  • PyTorch中常用的激活函數(shù)的方法示例

    PyTorch中常用的激活函數(shù)的方法示例

    這篇文章主要介紹了PyTorch中常用的激活函數(shù)的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • selenium設置瀏覽器為headless無頭模式(Chrome和Firefox)

    selenium設置瀏覽器為headless無頭模式(Chrome和Firefox)

    這篇文章主要介紹了selenium設置瀏覽器為headless無頭模式(Chrome和Firefox),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python自動化測試之異常及日志操作實例分析

    python自動化測試之異常及日志操作實例分析

    這篇文章主要介紹了python自動化測試之異常及日志操作,結合實例形式分析了python自動化測試中的異常捕獲與日志記錄相關操作技巧,需要的朋友可以參考下
    2019-11-11
  • Python提取PDF內容的方法(文本、圖像、線條等)

    Python提取PDF內容的方法(文本、圖像、線條等)

    這篇文章主要介紹了Python提取PDF內容的方法(文本、圖像、線條等),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Python getattr()函數(shù)使用方法代碼實例

    Python getattr()函數(shù)使用方法代碼實例

    這篇文章主要介紹了Python getattr()函數(shù)使用方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Tensorflow實現(xiàn)多GPU并行方式

    Tensorflow實現(xiàn)多GPU并行方式

    今天小編就為大家分享一篇Tensorflow實現(xiàn)多GPU并行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python使用PyGame實現(xiàn)打磚塊游戲

    python使用PyGame實現(xiàn)打磚塊游戲

    打磚塊也是一個非常經(jīng)典的小游戲,玩法大致如下,用一個小車接一個小球,然后反射小球,使之打在磚塊上,當小球碰到磚塊之后,則磚塊被消掉,邏輯十分清晰,本文將給大家介紹了python使用PyGame實現(xiàn)打磚塊游戲,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • Python selenium爬取微博數(shù)據(jù)代碼實例

    Python selenium爬取微博數(shù)據(jù)代碼實例

    這篇文章主要介紹了Python selenium爬取微博數(shù)據(jù)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05

最新評論