由於一切都在蟒蛇是參考,我不明白髮生了什麼事在下面的代碼:瞭解Python的引用
a = ['one']*3 // a = ['one', 'one', 'one']
b = [a]*3 // b = [['one', 'one', 'one'], ['one', 'one', 'one'], ['one', 'one', 'one']]
b[1][2] = 'two'
而現在,b爲
[['one', 'one', 'two'], ['one', 'one', 'two'], ['one', 'one', 'two']]
因爲我們做了b
指3乘以a
所提及的同一對象,重新分配任何一個組件,則在三個地方看到變化。
但是,當
a = [['one']]*3 // a = [['one'], ['one'], ['one']]
a[1] = ['two']
不作a = ['two', 'two', 'two']
,只是[['one'], ['two'], ['one']
彷彿現在已經指出,三個不同的對象,那麼爲什麼會發生同樣的事情。
我在這裏丟失了一些邏輯嗎?
由於提前, 尼基爾
不是重複,但[此問題](http://stackoverflow.com/questions/20699736/why-should-i-refer-to-names-and-binding-in-python-instead-of-variables和/ 20700226#20700226)與您的相關,並可能有助於瞭解幕後發生的事情。 – aquavitae