1樓:稜鏡
1.把range全部換成xrange
2.生成器,如 list=(item for item in fp)
3.利用psyco庫,提高函式和類的執行效率。
4.字串拼接:儘量少用「+」的方式,而採用''.join ,還有"%s"%i這樣賦值的手段。
5.函式的開銷很大。儘量把迴圈放在函式內進行。而不要讓每次迭代都呼叫函式。
6.「前提工作」先做好,比如該賦值,該拼接的,然後再引入到函式中,或者進行下面的迴圈。
7.儘量使用內建方法,因為內建的是c寫的,效率肯定高很多。
8.每當要對序列中的內容進行迴圈處理時,就應當嘗試用列表解析來代替它,如:[i for i in xrang(10) if i%2==0]
9.學會使用itertools模組。當python中新增了迭代器後,就為常見模式提供了乙個新的模組,因為它是以c語言編寫,所以提供了最高效的迭代器。
多記錄一些。列表,字串,字典,xrange,類檔案物件,這些都是可迭代物件,換句話說,都可以直接用在for迴圈中進行迭代,如for item in open('')
直接使用速度會快。另外,我對比了itertools裡工具和xrange,比如都迴圈100000次列印數字,使用islice(count(),100000)均要比xrange(100000)快。
而xrange還要比range快。
10.用列表解析取代for迴圈。列表解析的效率等於或高於map。
11.垃圾**機制,會對列表的操作有重大影響,如列表的append,或者列表解析。import gc,然後在資料載入模組前,結束後再。
如何提高python的執行效率
2樓:老男孩教育
首先需要明白三點:
1、不要太早就進行優化,很多人剛開始寫**就想著要提公升效能,不建議這麼想,優化的前提是**能夠正常工作,過早地進行優化只會忽略對主體功能的保證;
2、優化不是完美的,不可能解決所有的效能問題,開發代價也是需要考慮的;
3、不要優化無關緊要的部分,如果你**的執行速度慢,首先要找到**執行慢的地方,通常是內部迴圈,重點要在執行慢的地方進行優化,其他地方有一點時間消耗也是沒有什麼影響的。
1)避免全域性變數。
在剛開始用python寫指令碼時,通常習慣直接將其寫為全域性變數,但全域性變數和區域性變數實現方式不同,定義在全域性變數內的**會比定義在函式中的慢不少。
2)避免類內屬性訪問。
避免。的原則也適用於類內屬性,訪問。的速度會比訪問乙個區域性變數更慢一些,通過將需要頻繁訪問的類內屬性賦值給乙個區域性變數,可以提公升**執行速度。
3)避免不必要的抽象。
當你需要使用額外的物理層(如裝飾器、屬性訪問、描述器)去包裝袋嗎時,都會降低**的執行效率,大部分情況下,需要重新進行審視使用屬性訪問器的定義是否有必要,如果真的沒必要,就使用簡單屬性。
4)迴圈優化。
可以用for迴圈代替while迴圈,for迴圈比while迴圈的執行效率要快不少,也可以使用隱式for迴圈代替顯式for迴圈,更可以減少內層for迴圈的計算。
python if 多條件判斷怎麼快
3樓:雁西樓
將簡單的條件寫在前面羅。
if i>3 and sqrt(i)==int(sqrt(i)):
if 的表示式如果可以拆分為多個以and/or子表示式,會按順序進行計算,and連線的情況下,得到乙個false即不計算後面的表示式了,or連線的情況下,得到乙個true就不計算後面的了。所以這可以提高一點速度。
在不能確定各個子表示式的計算時間時,按上面說的,將命中率高的寫在前面,比如乙個if需要判斷條件a and b,其中a有80%可能是true,b有60%為true,那麼,寫成if b and a會快一點。
4樓:浪起來的番茄
其中型別識別符號和函式名稱為函式頭。型別識別符號指明瞭本函式的型別,函式的型別實際上是函式返回值的型別。 該型別識別符號與前面介紹的各種說明符相同。
函式名是由使用者定義的識別符號,函式名後有乙個空括號,其中無引數,但括號不可少。
中的內容稱為函式體。在函式體中宣告部分,是對函式體內部所用到的變數的型別說明。
在很多情況下都不要求無參函式有返回值,此時函式型別符可以寫為void。
我們可以改寫乙個函式定義:
void hello()
這裡,只把main改為hello作為函式名,其餘不變。hello函式是乙個無參函式,當被其它函式呼叫時,輸出hello world字串。
2. 有參函式定義的一般形式。
型別識別符號 函式名(形式參數列列)
5樓:週週周杰杰倫
if多條件判斷有以下語法網頁連結 輸入相應的條件就可 這個要結合具體的問題來看啊。
在,python中,有時迴圈答上億次,那麼,迴圈次數很多時怎樣提高效率
6樓:網友
1全部python的迴圈效率很高的,你可以測試一下。所以迴圈本身不影響效率。主要是迴圈體。
迴圈體內的執行時間要控制好。如果它執行時間為秒,那麼執行一次要幾年。
所以你要保證迴圈體的效率。另外可以將迴圈分成幾段,分別交給幾個程序去執行。這樣可以充分利用多臺服務,以及多個cpu來計算。
7樓:
使用元組,效率會高;其次想辦法減少迴圈次數,可以的話犧牲精確度來提高效率。
8樓:網友
c擴充套件啊、多程序啊、**優化啊、celery非同步執行啊。。。
python 正規表示式 re,compile速度慢 ,怎樣可以使的re.compile的速度更快
9樓:樹不開叉
可以試一下用 google 的 re2 模組代替 python 內建的 re 模組!
python如何提高for迴圈效率
10樓:網友
把資料放在乙個list, 在全部計算完以後輸出這個list?
print本來就是很慢的, 拖慢速度的是print不是for
一段python程式修改為函式呼叫後,效率為啥高了這麼多?
11樓:千彌安若
for迴圈不用執行壓棧這一過程,封裝成函式需要壓棧再出棧,多了這兩個步驟所需要的時間自然就上去了,這是資料結構研究的內容。望採納。
python if語句帶有大量or條件判斷,該如何簡化?
12樓:網友
可以用兩個元祖或者列表儲存學號,然後判斷學號所在的元祖,**如下:
boys = 1,2,3)
girls = 4,7,18,19)
id = 18
if id in boys:
print("男生")
elif id in girls:
print("女生")
else:print("沒有該學生")
python中用正規表示式去掉文字中所有的標點符號
我的理解是 python s的 也是字元 和標點符號一樣。你只要把去除的字元都加到正規表示式的括號中就可以了。所以 import re r line re.sub r,python s print line 先定義變數 punctuation,其內容應該是所有的標點符號。例如 import repu...
Python如何判斷正規表示式是否匹配成功
提問者寫的程式,邏輯是正確的,需要更改如下 import re s re.match d abc print s,type s if str s none print 1 else print 2 第四行,提問者是想控制s是否是空,但是通過第三行的type s 可以看得出來,s的型別和 號後面的型別...
C語言 逗號表示式,c語言 逗號表示式
c b a a 1 b a b 根據運算子優先順序,等效於 c b a a 1 b a b 整體是逗號表示式,逗號表示式的值由最末項決定,即a b,前面的表示式沒有改變a和b的值,所以整個表示式的值是2 3,即5 intmain 結果 value 8 逗號表示式從左往右計算,但返回右邊的資料值作為表...