Python向子列表添加值

15

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

>>> Lists = [[]]*12

这将提供:

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

然而,当试图将一个值附加到单个子列表时,它会将该值添加到所有子列表中。例如:

>>> Lists[2].append(1)

提供:

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

是否有一种方法只追加到单个子列表,以便结果看起来像:

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

你可能需要查看这个链接来理解为什么它会将元素添加到所有子列表中。如果你看第二张图,你可以把列表中的12个元素看作指向同一个对象[]。现在当你向Lists[2]中添加1时,它会被添加到共享的列表对象中。因此,Lists中的所有元素都似乎已经添加了1 - Nik
2个回答

25

列表对象是可变的,所以实际上您正在创建一个包含12个对同一个列表的引用的列表。使用列表推导式并创建12个不同的列表:

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

抱歉,我无法找到完全相同问题的原始副本。


2
我在解决拓扑排序问题时遇到了同样的问题。尝试这个方法:
Lists[2] = Lists[2]+[1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接