附加项列表上的Python3结果附加另一项需要更多解释

附加项列表上的Python3结果附加另一项需要更多解释,python,python-3.x,list,python-2.7,Python,Python 3.x,List,Python 2.7,有一个场景让我有点困惑 item=[5] 项目.附加(项目.附加(6)) 打印(项目) ##这将导致 [5、6、无] 为什么列表的最后一个元素是None?因为项。append(6)返回None,但在执行过程中将6添加到列表中,因此结果表达式转换为: item.append(None) 此行为描述为: 有些集合类是可变的。添加、减去或重新排列其成员的方法不会返回特定项,也不会返回集合实例本身,但不会返回 item.append(6)将6追加到列表中,并返回None 由于您执行item.appe

有一个场景让我有点困惑

item=[5]
项目.附加(项目.附加(6))
打印(项目)
##这将导致
[5、6、无]
为什么列表的最后一个元素是None?

因为
项。append(6)
返回
None
,但在执行过程中将
6
添加到列表中,因此结果表达式转换为:

item.append(None)
此行为描述为:

有些集合类是可变的。添加、减去或重新排列其成员的方法不会返回特定项,也不会返回集合实例本身,但不会返回

item.append(6)将6追加到列表中,并返回None

由于您执行item.append(item.append(6)),因此内部append()会追加6并返回None,外部append()会追加内部append()fn返回的“None”。只需删除outer append()函数即可解决问题。由于append()函数只返回None,因此不能这样打印列表。按照下面的代码操作

像这样:

item = [5]
item.append(6)
print(item)
我猜你在写问题时错过了答案


更新问题后更新:
item.append(6)返回None,因此当您追加item.append(6)到列表中时,它会再次追加None。

item.append(6)
返回
None
,最终结果是6。它会修改原始数据段,而不会复制,因此现在item的末尾有一个6,但是,您正在将该函数调用的结果附加到item,从而产生您的输出。@dipesh 6在
item.append(6)
执行时添加到列表中。似乎我问了一个不清楚的问题。我现在编辑了这个问题。非常感谢你的解释。我现在确实有了明确的观点:)实际问题应该有所不同。我现在编辑了这个问题@从来没有人给过我更多关于这个场景的见解。我只是想知道为什么原始列表中的最后一个元素是
None
。在回答这个问题之前,我没有意识到在列表中添加项目将返回
None
。我一定错过了这个问题