为啥 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