小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

90%的人說(shuō)Python程序慢,5大神招讓你的代碼像賽車一樣跑起來(lái)_代碼需要跑很久怎么辦

 三郞 2024-07-16 發(fā)布于重慶

1.for 循環(huán)

我們大部分的時(shí)候代碼里面都有for循環(huán),然后里面嵌套一段邏輯處理,下面有兩種方法來(lái)完成:
在這里插入圖片描述
二者的性能差距有多大呢,一般我們用內(nèi)置的timeit模塊來(lái)量化比較:
在這里插入圖片描述
把傳統(tǒng)的for改成推導(dǎo)列表,高下立判,性能提高了很多,提升了200%

2.用set而不用list

我們?cè)賮?lái)看一個(gè)常見(jiàn)的場(chǎng)景,搜索性能的時(shí)候用set是列表10倍,不信看下面這個(gè)例子
在這里插入圖片描述
原因搜索成員的時(shí)候,Python的set比list快很多。差距就在if i in mylist 和if i in myset。列表的復(fù)雜度是O(n),而集和的復(fù)雜度是O(1),搜索起來(lái)肯定是set快!

3.交換if和for的位置

很多時(shí)候,我們是在for循環(huán)內(nèi)部進(jìn)行條件判斷,循環(huán)一個(gè)變量,然后用if/else進(jìn)行判斷。對(duì)于這樣的情況,可以優(yōu)化一下,把if/else提到for循環(huán)外邊,也可以提高性能。
在這里插入圖片描述

4.巧妙的用try/except語(yǔ)句

很多時(shí)候在一個(gè)for循環(huán)內(nèi)部,對(duì)i進(jìn)行計(jì)算,然后添加到一個(gè)list里面,如果能巧妙地利用try/except,可以擺脫對(duì)if/else檢查的開(kāi)銷,從而提高性能。
在這里插入圖片描述

5.神器collection模塊

collection庫(kù)提供了很多模塊,這些模塊非常有用,有一些模塊是跟容器有關(guān),大部分的實(shí)戰(zhàn)項(xiàng)目我們都會(huì)用到。比如deque雙向隊(duì)列和defaultdict缺省字典。

1).雙向隊(duì)列deque
在這里插入圖片描述
deque是雙向隊(duì)列,如果你的業(yè)務(wù)邏輯里面需要大量的從隊(duì)列的頭或者尾部刪除,添加,用deque的性能會(huì)大幅提高!如果只是小隊(duì)列,并且對(duì)元素需要隨機(jī)訪問(wèn)操作,那么list會(huì)快一些。

2).缺省字典defaultdict

對(duì)于字典的使用,我們要學(xué)會(huì)用defaultdict來(lái)代替,一來(lái)是因?yàn)橛腥笔≈捣浅0踩?,如果訪問(wèn)不存在的key,不會(huì)報(bào)錯(cuò);二來(lái)是Pyhon性能會(huì)大幅提高。
在這里插入圖片描述
僅僅換了字典數(shù)據(jù)結(jié)構(gòu),性能就大幅的提高了3倍。

Python里面的技巧還是很多的,尤其是性能優(yōu)化這塊,Py3已經(jīng)比Py2性能上高了許多,如果我們?cè)谄綍r(shí)寫代碼的時(shí)候,能多一份思考,代碼不僅能work還能提升性能,相信你經(jīng)常這樣思考,慢慢的就會(huì)成為高手啦!

最后

作為一個(gè)IT的過(guò)來(lái)人,我自己整理了一些python學(xué)習(xí)資料,都是別人分享給我的,希望對(duì)你們有幫助。
學(xué)好 Python 不論是就業(yè)還是做副業(yè)賺錢都不錯(cuò),但要學(xué)會(huì) Python 還是要有一個(gè)學(xué)習(xí)規(guī)劃。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多