[英]How to change one specific element in a matrix?
我已經將矩陣初始化為...
mid_mtx = [ [(0, "")]*len(s2) ]*len(s1)
后來,我創建了一個列表,其中包含兩個值[6,“ Middle”],稱為Middle_ij_val。
我想用middle_ij_val更新mid_mtx [i] [j]。 所以我做了...
mid_mtx[i][j] = middle_ij_val
但是,這將輸出...
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
我應該如何編碼,以便如果我執行mid_mtx [1] [1],它只會僅更改該特定位置?
[[(0, "")] * len(s2)] * len(s1)
在表達式上方,創建一個重復相同元素而不是不同項目的列表。 所有項目都是同一項目; 更改一項會影響全部。
換句話說, mid_mtx[0] is mid_mtx[1]
, mid_mtx[0] is mid_mtx[2]
,....或id(mid_mtx[0]) == id(mid_mtx[1])
, id(mid_mtx[0]) == id(mid_mtx[2])
,...
[[(0, "") for j in s2] for i in s1]
列表理解上方將創建一個包含獨立項目的列表。
因為最里面的項目是元組(不可變的),所以可以改用以下代碼:
[[(0, "")] * len(s2) for i in s1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.