自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

90%的人說(shuō)Python程序慢,5大神招讓你的代碼像賽車(chē)一樣跑起來(lái)

開(kāi)發(fā) 后端
很多人抱怨說(shuō)自己寫(xiě)的Python代碼跑的慢,尤其是當(dāng)處理的數(shù)據(jù)集比較大的時(shí)候,其實(shí)稍微改動(dòng)幾行代碼就可以讓你的代碼性能提高好幾倍,不信一起來(lái)看下面這個(gè)5個(gè)小技巧。

 很多人抱怨說(shuō)自己寫(xiě)的Python代碼跑的慢,尤其是當(dāng)處理的數(shù)據(jù)集比較大的時(shí)候,其實(shí)稍微改動(dòng)幾行代碼就可以讓你的代碼性能提高好幾倍,不信一起來(lái)看下面這個(gè)5個(gè)小技巧。

1.for 循環(huán)

二者的性能差距有多大呢,一般我們用內(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ì)于這樣的情況,可以?xún)?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)銷(xiāo),從而提高性能。

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ī)訪(fǎng)問(wèn)操作,那么list會(huì)快一些。

2).缺省字典defaultdict

對(duì)于字典的使用,我們要學(xué)會(huì)用defaultdict來(lái)代替,一來(lái)是因?yàn)橛腥笔≈捣浅0踩?,如果訪(fǎng)問(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í)寫(xiě)代碼的時(shí)候,能多一份思考,代碼不僅能work還能提升性能,相信你經(jīng)常這樣思考,慢慢的就會(huì)成為高手啦!當(dāng)然很多新手經(jīng)常不得法,可以看看這個(gè)捷徑。

責(zé)任編輯:龐桂玉 來(lái)源: 菜鳥(niǎo)學(xué)Python
相關(guān)推薦

2019-09-03 08:00:00

電腦硬盤(pán)程序

2011-05-04 11:26:47

優(yōu)化

2022-12-06 09:03:44

代碼fork系統(tǒng)

2021-01-22 14:03:34

Flutter系統(tǒng)鴻蒙

2021-10-02 10:36:00

YAML編程語(yǔ)言軟件開(kāi)發(fā)

2021-01-12 11:12:58

大數(shù)據(jù)智慧交通

2009-04-29 14:40:17

2017-11-17 15:25:02

Java線(xiàn)程安全

2022-05-26 01:15:22

GitHub代碼快捷鍵

2014-09-22 09:27:57

Python

2017-05-22 10:33:14

PythonJuliaCython

2023-03-02 23:09:53

Node.jsC++JS

2013-07-05 14:59:50

程序員GPU

2020-02-28 15:49:26

2022-12-21 15:56:23

代碼文檔工具

2012-05-15 13:29:20

HTML5

2023-01-31 07:42:29

代碼JDKMaven

2020-04-06 09:05:07

谷歌機(jī)器狗人工智能

2017-11-07 10:09:39

Windows效率利器Everything

2011-10-24 13:07:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)