找回密碼
 註冊
搜索
查看: 742|回復: 0

[教學] python 正確初始化 二維 0數 陣列 array

[複製鏈接]
發表於 7 天前 | 顯示全部樓層 |閱讀模式
Push to Facebook
在寫python 初始化 二維 0數 陣列 array ,遇到一個鳥問題,一開始用了法2,陣列內容不管怎麼用,其他的行都會跟著改
搞了好幾天才找到問題,用了法1 才正常




Python 中沒有數組類型,但為了模擬它,我們可以使用列表。一個用零填滿的二維數組結構。這兩個表達式之間有什麼區別:
1.

  1. zeros = [ [0]*M for _ in range(N) ]
複製代碼

2.

  1. zeros = [[0]*M]*N
複製代碼


這種形式zeros = [[0]*M]*N不會得到你想要的結果,因為每一行都是一個實例,所以修改任何列都會改變所有行中的該列!如果 M 和 N 為 3,zeros[0][1]=2將導致[[0,2,0],[0,2,0],[0,2,0]]



正確方式應該為,避免了嵌套列表理解:

  1. zeros = [ [0]*M for _ in range(N) ]
複製代碼

https://stackoverflow.com/questions/13157961/2d-array-of-zeros
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-6-16 01:08 , Processed in 0.024980 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表