Python列表副本

时间:2012-01-21 07:26:38

标签: python list

我知道可以通过L [:]复制列表L.但我面临一个问题,我不明白为什么。

src = [1,2,3]
dest = [[5,6,7]]
dest.append(src[:].append(4))
dest
[[5, 6, 7], None]

在上面的示例中,当我尝试复制并附加4时,src列表不会复制到dest(请参阅无)。

dest.append(src[:])
dest
[[5, 6, 7], None, [1, 2, 3]]

如上面的代码片段所示,如果我添加简单地添加列表(到dest)而没有任何追加尝试,它就会被插入。 有什么想法吗?

2 个答案:

答案 0 :(得分:7)

append尝试做的是在给定列表中附加数据并返回None

这就是为什么你会在None结束时看到dest

以下代码应该执行您想要的操作:

dest.append(src + [4])

答案 1 :(得分:3)

在其中修改其参数/对象的函数/方法应返回None。这是Python中的常见约定。例如,.append().extend()random.shuffle();一个值得注意的例外是.pop()

作为@qiao already said你可以使用:

dest.append(src + [4])

或者

dest += [src + [4]]

src + [4]创建了一个新列表:[1,2,3,4],因此您无需制作明确的src副本。