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
。