當我操作兩個時,我認爲等效的多維列表,我有不同的結果。列表之間的唯一區別是它們是如何創建的。我正在使用Python 3.4.3在等效多維列表上操作時的不同行爲
>>> b = [[1,2],[1,2]]
>>> b[0][0] += 1
>>> b
[[2, 2], [1, 2]]
>>> b = [[1,2]] * 2
>>> b
[[1, 2], [1, 2]]
>>> b[0][0] += 1
>>> b
[[2, 2], [2, 2]]
正如你所看到的,b和它們的操作是相同的,但結果不是。我猜測這與它們的創建方式有關,因爲這是唯一的區別,但我不明白。
它與Python相同2.7.6
>>> b = [[1,2],[1,2]]
>>> b
[[1, 2], [1, 2]]
>>> c = [[1,2]] * 2
>>> c
[[1, 2], [1, 2]]
>>> c == b
True
>>> b[0][0] += 1
>>> b
[[2, 2], [1, 2]]
>>> c[0][0] += 1
>>> c
[[2, 2], [2, 2]]
>>> c == b
False
>>>
'[[1,2]] * 2'爲2個拷貝,但'[1,2]' –
'[「test」] * 3'的1個引用僅僅是'[「test」的快捷方式, 「測試」,「測試」]。這不像第一種情況那樣是一種手術。這就是爲什麼它也適用於字符串。 – imant