python将值附加到子列表

python将值附加到子列表,python,list,append,Python,List,Append,我的程序遇到了问题,我不确定我做错了什么。首先,我创建了一个空列表。例如: >>> Lists = [[]]*12 >>> Lists[2].append(1) 其中: >>> Lists [[], [], [], [], [], [], [], [], [], [], [], []] 但是,当尝试将值附加到单个子列表时,会将该值添加到所有子列表中。例如: >>> Lists = [[]]*12 >>&g

我的程序遇到了问题,我不确定我做错了什么。首先,我创建了一个空列表。例如:

>>> Lists = [[]]*12
>>> Lists[2].append(1)
其中:

>>> Lists
[[], [], [], [], [], [], [], [], [], [], [], []]
但是,当尝试将值附加到单个子列表时,会将该值添加到所有子列表中。例如:

>>> Lists = [[]]*12
>>> Lists[2].append(1)
给出:

>>> Lists
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
是否有一种方法可以仅附加到单个子列表,从而使结果如下所示:

>>> Lists
    [[], [], [1], [], [], [], [], [], [], [], [], []]

列表对象是可变的,所以实际上您正在创建一个列表,其中包含12个对一个列表的引用。使用列表理解并制作12个不同的列表:

Lists = [[] for i in range(12)]

很抱歉,我找不到这个问题的原始副本

我在试图解决拓扑排序问题时遇到了同样的问题

试试这个:

Lists[2] = Lists[2]+[1]
您可能需要查看以了解为什么它会附加到所有子列表。如果您看第二个图,您可以认为列表中的12个元素指向同一个对象
[]
。现在,当您将
1
附加到
列表[2]
时,它将附加到共享列表对象。因此,
列表中的所有元素似乎都附加了
1