最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

很多時候我們可能要頻繁的進(jìn)行元素的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ù)結(jié)構(gòu)供查找,常規(guī)的list,集合sl,字典dl.里面的元素都是隨機(jī)生成的,為什么要隨機(jī)生成元素?這是防止某些結(jié)構(gòu)對有序數(shù)據(jù)的偏向?qū)е聹y試效果不客觀。

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的效率

結(jié)果:

set: 0.01762632617301519
dict: 0.021149536796960248
······
···
··

呵呵呵呵···list等了20分鐘都沒出結(jié)果。

所以···結(jié)果一覽無余啊。

查找效率:set>dict>list

單次查詢中:看來list 就是O(n)的;而set做了去重,本質(zhì)應(yīng)該一顆紅黑樹(猜測,STL就是紅黑樹),復(fù)雜度O(logn);dict類似對key進(jìn)行了hash,然后再對hash生成一個紅黑樹進(jìn)行查找,其查找復(fù)雜其實是O(logn),并不是所謂的O(1)。O(1)只是理想的實現(xiàn),實際上很多hash的實現(xiàn)是進(jìn)行了離散化的。dict比set多了一步hash的過程,so 它比set慢,不過差別不大。

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python第三方庫pygame的使用詳解

    python第三方庫pygame的使用詳解

    這篇文章主要介紹了python第三方庫pygame的使用,pygame一般用來做游戲,在這需要注意在使用pygame提供的功能之前,需要調(diào)用init方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 詳解Python字符串原理與使用的深度總結(jié)

    詳解Python字符串原理與使用的深度總結(jié)

    本文將學(xué)習(xí)字符串?dāng)?shù)據(jù)類型相關(guān)知識,將討論如何聲明字符串?dāng)?shù)據(jù)類型,字符串?dāng)?shù)據(jù)類型與?ASCII?表的關(guān)系,字符串?dāng)?shù)據(jù)類型的屬性,以及一些重要的字符串方法和操作,超級干貨,不容錯過
    2022-05-05
  • Python實現(xiàn)的二維碼生成小軟件

    Python實現(xiàn)的二維碼生成小軟件

    這篇文章主要介紹了Python實現(xiàn)的二維碼生成小軟件,使用wxPython、python-qrcode、pyqrcode、pyqrnative等技術(shù)和開源類庫實現(xiàn),需要的朋友可以參考下
    2014-07-07
  • python如何求100以內(nèi)的素數(shù)

    python如何求100以內(nèi)的素數(shù)

    在本篇文章里小編給大家分享的是關(guān)于python如何求100以內(nèi)的素數(shù)的方法實例,需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • Python實現(xiàn)TCP通信的示例代碼

    Python實現(xiàn)TCP通信的示例代碼

    這篇文章主要介紹了Python實現(xiàn)TCP通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python3中apply函數(shù)和lambda函數(shù)的使用詳解

    python3中apply函數(shù)和lambda函數(shù)的使用詳解

    本文主要介紹了python3中apply函數(shù)和lambda函數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python使用websocket庫發(fā)送WSS請求

    python使用websocket庫發(fā)送WSS請求

    WebSocket是一種在客戶端和服務(wù)器之間進(jìn)行雙向通信的協(xié)議,Python中有許多WebSocket庫可供選擇,其中一個常用的是websocket庫,使用該庫可以輕松地發(fā)送WSS請求,需要的朋友可以參考下
    2023-10-10
  • Pytorch Dataset,TensorDataset,Dataloader,Sampler關(guān)系解讀

    Pytorch Dataset,TensorDataset,Dataloader,Sampler關(guān)系解讀

    這篇文章主要介紹了Pytorch Dataset,TensorDataset,Dataloader,Sampler關(guān)系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用python開發(fā)vim插件及心得分享

    使用python開發(fā)vim插件及心得分享

    Vim 插件是一個 .vim 的腳本文件,定義了函數(shù)、映射、語法規(guī)則和命令,可用于操作窗口、緩沖以及行。一般一個插件包含了命令定義和事件鉤子。當(dāng)使用 Python 編寫 vim 插件時,函數(shù)外面是使用 VimL 編寫,盡管 VimL 學(xué)起來很快,但 Python 更加靈活
    2014-11-11
  • 用python實現(xiàn)彈球小游戲

    用python實現(xiàn)彈球小游戲

    大家好,本篇文章主要講的是用python實現(xiàn)彈球小游戲,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論

台州市| 玉门市| 晋宁县| 通州区| 奇台县| 确山县| 张北县| 南岸区| 资兴市| 高清| 嘉峪关市| 青河县| 大渡口区| 乐山市| 太和县| 乐至县| 凤阳县| 宜君县| 台前县| 达孜县| 新巴尔虎右旗| 凭祥市| 龙江县| 延安市| 交城县| 武冈市| 德格县| 遵义市| 碌曲县| 明水县| 资源县| 南部县| 广汉市| 青龙| 张掖市| 故城县| 铜鼓县| 云和县| 凤城市| 广灵县| 广德县|