为啥 append 方法在我的列表中返回 None ? [复制]

Posted

技术标签:

【中文标题】为啥 append 方法在我的列表中返回 None ? [复制]【英文标题】:Why does the append method return None with my list? [duplicate]为什么 append 方法在我的列表中返回 None ? [复制] 【发布时间】:2017-08-14 19:10:15 【问题描述】:

我知道我可以使用“append()”将元素添加到列表中,但为什么赋值返回 None?

>>> a=[1,2,3]
>>> a.append(4)
>>> print a 
[1, 2, 3, 4]
>>> a=a.append(5)
>>> print a 
None
>>>

【问题讨论】:

【参考方案1】:

因为您将输出分配给没有输出的追加行为,所以不是:

a=a.append(5)

你只是想要

a.append(5)

【讨论】:

【参考方案2】:

我尝试用最简单的方式解释: 与:

a.append(5)

您正在调用将某些内容(在本例中为 5)添加到 a

的函数

与:

a = a.append(5)

你是说 a 等于函数 .append() 的结果。但 append 只是修改一个现有的列表,它不返回任何内容,而且它不会像你想象的那样返回一个附加元素的新列表。

【讨论】:

这实际上是不正确的。如果追加返回“将某些内容添加到列表的函数”,那么您将能够将结果作为函数调用。它没有那样做;它只是什么都不返回。 说 a = function()(其中 function() 返回 1)与 a = 1 相同。所以如果 .append() 返回 None,则 a = append( 5) 也将返回 None。但是我试图更好地解释它 没错,但您的说法“a 等于向列表添加内容的功能”仍然具有误导性,因为a 不等于任何类型的功能。这是一个非常重要的区别,因为在 Python 中变量可以等于函数,并且函数返回函数(例如装饰器)是很常见的。 是的,你说得对,我想说的是“a等于添加列表的函数的结果” 我认为您的最新编辑很有帮助,并且清楚地表明了您要说的内容。【参考方案3】:

这只是表明“追加”方法不返回任何内容。它只修改现有列表。它不会返回更新的列表。

不要打扰a = a.append(4)。如果您只想在列表中添加一个条目,请执行a.append(4) 修改a

【讨论】:

以上是关于为啥 append 方法在我的列表中返回 None ? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 append() 在 Python 中总是返回 None? [复制]

Python,明明只append了一次,为啥所有子列表都变了啊.jpg

python的append的NoneType问题 & map批量向列表中追加元素

python列表和元组的方法

python中列表的增删改查以及其它相关方法

为啥 .append() 方法不适用于字符串,它们的行为不像列表?