PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] a[1:3]會馬上複製嗎?
作者:
why8ther
(外八喵)
2015-07-13 16:52:20
已知:
>>> a = [1,2,3,4]
>>> b = a[1:3]
b = [2, 3]
>>> b[0] = 99
b = [99, 3]
a = [1, 2, 3, 4]
由此可知,黃色那行的值並不會改動到a陣列,而是創造一個副本了
我的問題是 :
這個副本是(1) 在我呼叫a[1:3]時就被創造了?
抑或(2) 直到我改動b[0]才被創造,若不改動就永遠參照本來陣列
因為最近遇到比較高的性能要求 需要弄清楚@@
第一次po文 請大家多多指教
作者: eric781101
2015-07-13 17:01:00
第二行,把a[1:3] assign給變數bb與a無關,是獨立的變數
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2015-07-13 17:53:00
沒看 source, 但我猜應該不會, 這是很常見的最佳化如果真的需要保證, 可以改用 memory view 來替代喔我錯了, 好像會 shallow copy, 沒有 implicit sharing
作者:
ck574b027
(荒圍!定厝!賊!妹!)
2015-07-13 20:10:00
用 b = a[:] 就很清楚了,會直接產生新物件
作者: LiloHuang (十年一刻)
2015-07-13 22:14:00
Python 的 list 並沒有實作 copy-on-write
作者:
why8ther
(外八喵)
2015-07-13 22:43:00
瞭解 謝謝大家 看來要改寫法了QQ
作者:
bibo9901
(function(){})()
2015-07-14 11:43:00
看來你不想要複製? 那可以用 itertools.islice
繼續閱讀
[問題] 請問這樣解釋理解是正確的嗎?
kobe770205
[推荐] 新手學Python有沒有推薦的書
abcgo
[問題]django怎麼匯入已建好的資料庫?
zz654456
[問題] 依照資料中的子字串判定使用函式
chuanmaotou
[問題] python 3畫圖問題
tyc5116
[問題] byte array處理的問題
sonying
[問題] 基本環境設定問題
gauss02
[問題] urllib2遇到https?
henry40616
[徴人]報名線上演算法和數據分析課程
aaron0121
[問題] 一次創建多個字典
sariel0322
Links
booklink
Contact Us: admin [ a t ] ucptt.com