首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python list + list与list.append()

Python list + list与list.append()
EN

Stack Overflow用户
提问于 2011-04-08 09:43:06
回答 2查看 11.2K关注 0票数 6

今天,我花了大约20分钟试图弄清楚为什么它会像预期的那样工作:

代码语言:javascript
复制
users_stories_dict[a] = s + [b] 

但这将具有None值:

代码语言:javascript
复制
users_stories_dict[a] = s.append(b)

有人知道为什么append函数不返回新列表吗?我正在寻找做出这个决定的某种合理的原因;对我来说,这看起来像是Python新手弄错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 09:48:50

append实际上是通过修改一个列表来工作的,所以所有的魔力都体现在副作用上。因此,append返回的结果为None。换句话说,一个人想要的是:

s.append(b)

然后:

users_stories_dict[a] = s

但是,你已经弄明白了那么多。至于为什么这样做,虽然我真的不知道,但我猜这可能与指示操作正常进行的0 (或false)退出值有关,并且通过为作用是就地修改其参数的函数返回None来报告修改成功。

但我同意,如果它返回修改后的列表,那会很好。至少,Python的行为在所有这些函数中都是一致的。

票数 12
EN

Stack Overflow用户

发布于 2011-04-08 09:53:00

append()方法返回None,因为它会通过添加附加为元素的对象来自行修改列表,而+运算符会连接两个列表并返回结果列表

例如:

代码语言:javascript
复制
a = [1,2,3,4,5]
b = [6,7,8,9,0]

print a+b         # returns a list made by concatenating the lists a and b
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

print a.append(b) # Adds the list b as element at the end of the list a and returns None
>>> None

print a           # the list a was modified during the last append call and has the list b as last element
>>> [1, 2, 3, 4, 5, [6, 7, 8, 9, 0]]

因此,正如您所看到的,最简单的方法是将两个列表添加在一起,因为即使您使用append()将列表b附加到a,如果没有额外的工作,也不会得到您想要的结果

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

https://stackoverflow.com/questions/5589549

复制
相关文章

相似问题

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