2 回答

TA貢獻1812條經驗 獲得超5個贊
Python有一個用于快速基準測試的模塊:timeit
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> timeit.timeit("[n for n in range(10)]")
0.4846451000000229
>>> timeit.timeit("list(range(10))")
0.3175106840000126
>>>
顯然,使用速度更快。它也不那么冗長,意圖更清晰恕我直言(列表推導式通常用于轉換/過濾可迭代對象)。list()

TA貢獻1806條經驗 獲得超5個贊
Bruno已經解釋了為什么列表理解可能不理想,但我想強調列表和范圍之間的一些區別。
請務必注意,a 和 a 具有一些不同的功能和方法。因此,“哪一個更好”的答案取決于您的應用。listrange
系列優勢
范圍是可迭代的,不必將所有數字都保留在內存中。例如,Python 與 沒有問題,但會拋出錯誤。range(int(1e20))list(range(int(1e20)))
還可以更有效地查詢范圍。比較以下代碼片段:
>>> from timeit import timeit
>>> timeit("100 in numbers",setup='numbers=range(10000)')
0.1061642
>>> timeit("100 in numbers",setup='numbers=list(range(10000))')
1.2257957
對于這種情況,一個范圍的查詢速度提高了 10 倍,對于較大的列表,這種差異只會增加。
列表的優點
最大的區別是列表可以包含任何類型的對象。因此,如果您希望您的數字是浮動的,那么這是更簡單的解決方案。
此外,它還允許您追加或刪除單個條目。因此,如果您需要對數字進行一些自定義排序,那么列表可能會更容易。
添加回答
舉報