我有一個小問題有關Python列表:
爲什麼會出現這種情況?
x = [[]] * 4
x[0].append('x') -> [['x'], ['x'], ['x'], ['x']]
我有一個小問題有關Python列表:
爲什麼會出現這種情況?
x = [[]] * 4
x[0].append('x') -> [['x'], ['x'], ['x'], ['x']]
的[]
相同的情況下被複制,所以當你追加到第一個'x'
,你實際上將其追加到所有的 - 因爲他們都是同一個對象!
做正確的做法是,在每次明確創建一個新的列表實例:因爲您是複製相同的列表四次
x = [[] for _ in range(4)]
。而且由於在你的列表中你有4個列表指向相同的內存空間,如果你修改其中的一個,這個改變將影響所有內存空間。 – rubik 2012-03-04 11:44:04
此外,請參閱[Python常見問題中的此條目](http://docs.python.org/faq/programming.html#how-do-i-create-a-multidimensional-list) – BioGeek 2012-03-04 16:07:19
好的,謝謝.. – cval 2012-03-04 20:48:45