为什么python在索引空列表列表时会更改每个列表?

为什么python在索引空列表列表时会更改每个列表?,python,list,Python,List,我创建了一个包含3个空列表的列表: >>> l = [[]]*3 >>> l [[], [], []] 然后在第二项中添加了一项: >>> l[1].append("j") 但它将其添加到了每个列表中: >>> l [['j'], ['j'], ['j']] 为什么?我的猜测是[[]]*3操作符将相同的列表添加3倍作为引用;因此,修改一个列表会修改其他列表 要创建3个不同的空列表: >>

我创建了一个包含3个空列表的列表:

>>> l = [[]]*3
>>> l
[[], [], []]
然后在第二项中添加了一项:

>>> l[1].append("j")
但它将其添加到了每个列表中:

>>> l
[['j'], ['j'], ['j']]

为什么?

我的猜测是
[[]]*3
操作符将相同的列表添加3倍作为引用;因此,修改一个列表会修改其他列表

要创建3个不同的空列表:

>>> l = [[] for r in range(3)]
>>> l[1].append("j")
>>> l
[[], ['j'], []]

是的,我会说你是对的。因为如果您手动输入子列表并尝试附加,它将按预期工作<代码>l=[],[],[]l[0]。扩展(“j”)打印(l)这是否回答了您的问题?这里没有“单数列表”,而是单数列表。