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

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

python中具有相同功能的數組的問題

python中具有相同功能的數組的問題

Helenr 2021-07-16 19:15:18
所以我遇到了一個非常奇怪的場景,我簡化了代碼,但遇到了同樣的問題。def write_to_bf_of_lpr(bf_source, bf_destination, lpr_index, start, length):    for x in range(length):        bf_destination[lpr_index][start + x] = bf_source[start + x]source = ['a','b','c','d','e']destination = [[0]*5]*3dets2=[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]for x in range(1):    write_to_bf_of_lpr(bf_source=source,bf_destination=dets2,lpr_index=x,start=1,length=2)for x in range(1):    write_to_bf_of_lpr(bf_source=source,bf_destination=destination,lpr_index=x,start=1,length=2)這段代碼很容易理解,我希望做的只是每次(或迭代)更改特定的數組?,F在:當我在支持版本中編寫時:destination = [[0]*5]*3 它正在更改 SINGLE 迭代中的所有數組。當我用 LONG 版本(這不是可取的)編寫時,我得到了正確的版本。你可以看到這dest2是正確的,而destination錯誤的答案。有趣的是,我只是簡單地從簡短版本中復制了值……結果卻有所不同……是 Pycharm 錯誤、python 還是我遺漏了什么?請看輸出截圖
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

那是因為當你按照你的方式定義一個數組時,你基本上是在創建引用的副本,[0]*5這意味著如果你改變一個,它們都會改變。您可以在使用 numpy 時做您想做的事情,這樣當您更改一個索引時,只有該索引會更改。


import numpy as np


destination = np.zeros((3, 5))

您也可以在沒有 numpy 的情況下執行以下操作:


destination = [[0] * 5 for _ in range(3)]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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