首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表副本

Python列表副本
EN

Stack Overflow用户
提问于 2012-01-21 15:26:38
回答 2查看 352关注 0票数 0

我知道列表L可以通过做L来复制,但我面临着一个问题,我不明白为什么。

代码语言:javascript
复制
src = [1,2,3]
dest = [[5,6,7]]
dest.append(src[:].append(4))
dest
[[5, 6, 7], None]

在上面的示例中,当我试图复制src列表并向其追加4时,src列表并未复制到dest (参见None)。

代码语言:javascript
复制
dest.append(src[:])
dest
[[5, 6, 7], None, [1, 2, 3]]

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-21 15:30:30

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

这就是为什么你会在dest的末尾看到None

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

代码语言:javascript
复制
dest.append(src + [4])
票数 7
EN

Stack Overflow用户

发布于 2012-01-21 15:39:36

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

作为@qiao already said,您可以使用:

代码语言:javascript
复制
dest.append(src + [4])

代码语言:javascript
复制
dest += [src + [4]]

src + [4]创建了一个新的list:[1,2,3,4],因此您不需要显式地复制src

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8951419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档