15

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

>>> Lists = [[]]*12

这使:

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

但是,当尝试将值附加到单个子列表时,它会将值添加到所有子列表。例如:

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

给出:

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

有没有办法只附加到一个子列表,以便结果如下所示:

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

2 回答 2

23

列表对象是可变的,因此您实际上是在创建一个列表,其中包含对一个列表的 12 次引用。使用列表推导并制作 12 个不同的列表:

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

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

于 2013-06-20T23:53:37.170 回答
1

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

尝试这个:

Lists[2] = Lists[2]+[1]
于 2016-07-30T21:11:16.033 回答