Python迴圈的最佳實踐是什麼?


這是一個與語言無關的問題。幾乎每種語言都有迴圈,相同的原則也適用於所有語言。您需要意識到,編譯器在迴圈最佳化方面做了大部分繁重的工作,但作為程式設計師,您也需要保持迴圈的最佳化。

重要的是要意識到,您放入迴圈中的所有內容都會在每次迴圈迭代中執行。最佳化迴圈的關鍵是最小化它們執行的操作。即使看起來非常快的操作,如果重複很多次,也會花費很長時間。執行一個需要1微秒的操作一百萬次將需要1秒才能完成。

不要在迴圈內或甚至在其起始條件中執行諸如len(list)之類的操作。

示例

a = [i for i in range(1000000)]
length = len(a)
for i in a:
   print(i - length)

比這快得多

a = [i for i in range(1000000)]
for i in a:
   print(i - len(a))

您還可以使用迴圈展開(https://en.wikipedia.org/wiki/Loop_unrolling) 等技術,這是一種迴圈轉換技術,它試圖以犧牲其二進位制大小為代價來最佳化程式的執行速度,這是一種稱為時空權衡的方法。

使用map、filter等函式代替顯式的for迴圈也可以提高一些效能。

更新於:2020年3月5日

623 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告