1
當我更改嵌套列表grid
中的值時,我發現了一個奇怪的行爲,它被初始化爲grid = [[0]*10]*10
。更改嵌套列表中的單個值時,多個值會發生變化
grid = [[0]*10]*10
grid[0][0] = 1
for l in grid:
print l
輸出:
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
當我初始化grid
如grid = [[0]*10 for x in range(10)]
。 它按預期工作。
grid = [[0]*10 for x in range(10)]
grid[0][0] = 1
for l in grid:
print l
輸出:
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
有誰知道爲什麼會這樣?
謝謝你的幫助!
是@安德魯是正確的。 #說明 grid = [[0] * 10] * 10#在這裏啓動一個列表並分配給grid grid = [[0] * 10 for x in range(10)]#這裏構造一個列表並分配到電網 –