假设我有一个嵌套数组,foo
:
>>> foo = [[" ", " "], [" ", " "]]
说我想要更改数组0
的元素0
。我会这样做:
>>> foo[0][0] = "a"
>>> print foo
[["a", " "], [" ", " "]]
假设相反foo
等于:
>>> foo2 = [[" "] * 2] * 2
如果我打印foo2
,我仍会得到与原始foo
相同的结果:
>>> print foo2
[[" ", " "], [" ", " "]]
如果我尝试更改foo2
中的元素,我会得到以下结果:
>>> foo2[0][0] = "a"
>>> print foo2
[["a", " "], ["a", " "]]
如您所见,它不是仅替换数组0
的元素0
,而是替换了所有数组中的元素0
。是什么导致了这种奇怪的行为?