Python嵌套列表

sas*_*hab -1 python nested-lists

可能重复:
Python列表追加行为

为什么这段代码:

x = [[]]*3
x[0].append('a')
x[1].append('b')
x[2].append('c')
x[0]=['d']

print x
Run Code Online (Sandbox Code Playgroud)

打印[['d'],['a','b','c'],['a','b','c']]?

Sim*_*ser 5

这是最好的解释一步一步:

>>> x = [[]]*3
>>> x
[[], [], []]
>>> x[0].append('a')
>>> x
[['a'], ['a'], ['a']]
>>> x[1].append('b')
>>> x
[['a', 'b'], ['a', 'b'], ['a', 'b']]
>>> x[2].append('c')
>>> x
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
>>> x[0]=['d']
>>> x
[['d'], ['a', 'b', 'c'], ['a', 'b', 'c']]

第一个语句创建一个列表,其中包含对其中相同元素的三个引用.因此,当您修改第一个元素时,您还要修改第二个和第三个元素.因此,append语句为列表的每个元素添加一个数字.