亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生成一個數字列表 - 一般來說,哪一個更好?

生成一個數字列表 - 一般來說,哪一個更好?

滄海一幻覺 2022-08-25 15:56:04
n=[n for n in range(10)]print(n)r=list(range(10))print(r)a=range(0,10)print(list(a))這些特定的符號有什么優點嗎?
查看完整描述

2 回答

?
慕雪6442864

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()


查看完整回答
反對 回復 2022-08-25
?
忽然笑

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 倍,對于較大的列表,這種差異只會增加。


列表的優點

最大的區別是列表可以包含任何類型的對象。因此,如果您希望您的數字是浮動的,那么這是更簡單的解決方案。


此外,它還允許您追加或刪除單個條目。因此,如果您需要對數字進行一些自定義排序,那么列表可能會更容易。


查看完整回答
反對 回復 2022-08-25
  • 2 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號