我覺得這裏是個很奇怪的Python代碼,但我不知道其中的原因:爲什麼蟒蛇的行爲不符合預期
In [7]: a = [[]] * 3
In [8]: b = [[], [], []]
In [9]: a == b
Out[9]: True
In [10]: a[0].append(1)
In [11]: b[0].append(1)
In [12]: a == b
Out[12]: False
In [13]: a
Out[13]: [[1], [1], [1]]
In [14]: b
Out[14]: [[1], [], []]
爲什麼是[[1], [1], [1]]
a[0].append(1)
後?
類似的問題是:
In [15]: c = dict.fromkeys(range(3),[])
In [16]: d = {0:[], 1:[], 2:[]}
In [17]: c == d
Out[17]: True
In [18]: c[0].append(1)
In [19]: d[0].append(1)
In [20]: c == d
Out[20]: False
In [21]: c
Out[21]: {0: [1], 1: [1], 2: [1]}
In [22]: d
Out[22]: {0: [1], 1: [], 2: []}
在我的理解,a
是b
,並且c
也等於d
,但事實並非如此。爲什麼?誰能幫我?非常感謝!
謝謝!如果我想創建一個很長的列表,就像'b',例如,它將包含100個[]'s。顯然,'b = [[],[],[],...]'不是一個好的解決方案,我該如何實現它? –
添加了一個示例。 –