我知道可以通过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)而没有任何追加尝试,它就会被插入。 有什么想法吗?
答案 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
副本。