我有一个小问题有关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