假設我有這樣的代碼:乘陣列,使矩陣給人意想不到的結果
dim = 3
eye = [[0] * dim] * dim
,它是名單的名單,我查
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
現在,如果我這樣做,我得到:
eye[1][2] = 1
eye
[[0, 0, 1], [0, 0, 1], [0, 0, 1]]
但是,如果我手動把這個表達式,上面的代碼按預期工作:
eye2=[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
eye2[1][2] = 1
eye2
[[0, 0, 0], [0, 0, 1], [0, 0, 0]]
這兩者有什麼區別?
更新:感謝所有的說明,假設我有這樣的代碼:
a = [0]
type(a)
b = a * 3 # or b = [[0] *3]
因此,B持有3次對。我期望改變b [0]或b [1]或b [2]會改變所有3個元素。
但是這段代碼顯示了正常的行爲,爲什麼呢?
b[1] = 3
b
[0, 3, 0]
有人教我,我可以做這種標量乘法列表。如果結果很奇怪,這種方法的應用是什麼? – user1502776 2014-10-28 06:17:39