python将值附加到子列表

时间:2013-06-20 23:51:22

标签: python list append

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

>>> Lists = [[]]*12

给出:

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

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

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

给出:

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

有没有办法只追加到一个子列表,结果如下:

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

2 个答案:

答案 0 :(得分:19)

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

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

对不起,我找不到这个问题的原始副本

答案 1 :(得分:1)

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

试试这个:

Lists[2] = Lists[2]+[1]