我知道列表L可以通过做L来复制,但我面临着一个问题,我不明白为什么。
src = [1,2,3]
dest = [[5,6,7]]
dest.append(src[:].append(4))
dest
[[5, 6, 7], None]在上面的示例中,当我试图复制src列表并向其追加4时,src列表并未复制到dest (参见None)。
dest.append(src[:])
dest
[[5, 6, 7], None, [1, 2, 3]]如上面的代码片段所示,如果我只是添加列表(添加到dest),而没有任何附加尝试,它就会被插入。有什么想法吗?
发布于 2012-01-21 15:30:30
append尝试做的是在给定列表上追加数据并返回None。
这就是为什么你会在dest的末尾看到None。
下面的代码应该可以执行您想要的操作:
dest.append(src + [4])发布于 2012-01-21 15:39:36
修改其参数/对象位置的函数/方法应返回None。这是Python中的一种常见约定。例如,.append()、.extend()、random.shuffle();一个值得注意的例外是.pop()。
作为@qiao already said,您可以使用:
dest.append(src + [4])或
dest += [src + [4]]src + [4]创建了一个新的list:[1,2,3,4],因此您不需要显式地复制src。
https://stackoverflow.com/questions/8951419
复制相似问题