1. 程式人生 > 其它 >程式碼優化的一些手段(以python為例)

程式碼優化的一些手段(以python為例)

技術標籤:pythonpython

程式碼優化的一些手段總結

最近在學python,總結了一些關於程式碼優化的手段。
作為初學者,寫的可能任存在問題,希望大家斧正。

遵循一些原則就可以提高執行的效率,避免低效計算

1.在向列表新增元素時,使用append,而不使用+;同樣在連線多個字串時,使用join,而不使用+;
(用“+”會產生新的物件,而延長了執行時間)
當連線大量的字串時,便可看出兩者的執行效率,以下面的程式碼為例:

import time			#引入time進行計時
#使用append新增元素
strat=time.time()
for i in range(1000):
    s=
[] for m in range(10000): s.append(i+m) end=time.time() print("耗時:{0}".format((end-strat)))#計算差值的出執行時間 #使用‘+’連線 strat2=time.time() for i in range(1000): s=[] for m in range(10000): s=s+[i+m] end2=time.time() print("耗時:{0}".format((end2-strat2)))

執行結果:
在這裡插入圖片描述
2.儘量減少迴圈內部不必要的計算

3.巢狀迴圈中,儘量減少內層迴圈的計算,儘可能向外提

例如如下迴圈程式碼的優化:

import time
#將不必要的計算放在了迴圈內層
strat=time.time()
for i in range(1000):
    jieguo=[]
    for j in range(10000):
        jieguo.append(i*365+j*4)
end=time.time()
print("耗時:{0}".format((end-strat)))

#將不必要的計算向外層提
strat2=time.time()
for i in range(1000):
    jieguo=
[] c=i*365 #將i*356提前計算,放在外層迴圈 for j in range(10000): jieguo.append(c+j*100) end2=time.time() print("耗時:{0}".format((end2-strat2)))

執行結果:
在這裡插入圖片描述
4.區域性變數查詢較快,儘量使用區域性變數
測試程式碼如下:

import time
#不定義全域性變數result
strat=time.time()
for i in range(100):
    result=[]
    for m in range(10000):
         result.append(i+m)
end=time.time()
print("耗時:{0}".format((end-strat)))

#定義全域性變數result
strat2=time.time()
result=[]
for i in range(1000):
    result=[]
    for m in range(10000):
        result.append(i+m)

end2=time.time()
print("耗時:{0}".format((end2-strat2)))

執行結果:
在這裡插入圖片描述

5.列表進行元素的插入和刪除,儘量在列表尾部操作(即如果非必要儘量少使用insert()方法,可以使用append()時就使用append)
(與上述測試程式碼類似這裡我就不寫了,大家可以自己敲了看一下結果)