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

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

為什么創建一個小數組,然后擴展它,而不是完全從一個大列表創建一個數組更有效?

為什么創建一個小數組,然后擴展它,而不是完全從一個大列表創建一個數組更有效?

慕尼黑5688855 2021-09-01 14:41:57
在一本書中找到以下代碼,但無法獲得完整的解釋。x = array('d', [0] * 1000000) x = array('d', [0]) * 1000000第一種情況下的 python 代碼創建一個長度為 1000000 的數組,而在第二部分中創建一個單一大小的數組并將大小乘以相同的因子。第二種情況的代碼比第一種情況快 100 倍。速度差異的確切原因是什么?數組的python實現如何發揮作用?
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

Pythonlist存儲 Python 對象,但array.array對象存儲原始 C 數據類型。

第一行需要單獨處理 中的每個對象[0] * 1000000,跟蹤指針并執行類型檢查、動態分派和引用計數以及處理每個元素并將其數據轉換為原始 C double 的一百萬次。每個元素碰巧都是相同的,但array構造函數不知道這一點。還有構建和清理百萬元素列表的費用。

第二行就簡單多了。Python 可以只memcpy處理數組的內容一百萬次。


查看完整回答
反對 回復 2021-09-01
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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