为了账号安全,请及时绑定邮箱和手机立即绑定

为什么追加在此代码中不返回任何内容?

为什么追加在此代码中不返回任何内容?

达令说 2019-05-31 11:19:28
为什么追加在此代码中不返回任何内容?list = [1, 2, 3]print list.append(4)   ## NO, does not work, append() returns None## Correct pattern:list.append(4)print list  ## [1, 2, 3, 4]我正在学习Python,我不确定这个问题是否是特定于该语言的,以及如何在Python中实现追加。
查看完整描述

4 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

append是一个变异(破坏性)操作(它在适当的位置修改列表,而不是返回新列表)。做非破坏性等效物的惯用方法append会是

l = [1,2,3]print l + [4] # [1,2,3,4]print l # [1,2,3]

回答你的问题,我猜如果append返回新修改的列表,用户可能会认为它是非破坏性的(他们可能会编写类似的代码)。

m = l.append("a")n = l.append("b")

期待n成为[1,2,3,"b"]


查看完整回答
反对 回复 2019-05-31
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

在Python中,变异序列返回的方法是一种惯例。None.

考虑:

>>> a_list = [3, 2, 1]>>> print a_list.sort()None>>> a_list[1, 2, 3]>>> a_dict = {}>>> print a_dict.__setitem__('a', 1)
None>>> a_dict{'a': 1}>>> a_set = set()>>> print a_set.add(1)None>>> a_set
set([1])

从Python3.3开始,现在更多明确记录:

有些集合类是可变的。添加、减除或重新排列其成员位置的方法,而不返回特定项的方法,永远不会返回集合实例本身,但是None.

设计与历史常见问题给出推理这项设计决定的背后(关于清单):

为什么不list.sort()返回排序列表?

在性能重要的情况下,只为排序而复制列表将是浪费的。因此,list.sort()对列表进行排序。为了提醒您这个事实,它不返回排序列表。这样,当您需要排序的副本时,您不会被不小心地覆盖列表,但也需要保留未排序的版本。

在Python2.4中,一个新的内置函数-sorted()-增加。此函数根据提供的可迭代性创建一个新列表,对其进行排序并返回它。


查看完整回答
反对 回复 2019-05-31
?
千巷猫影

TA贡献1829条经验 获得超7个赞

它什么也不回。它将/Add添加到变量中,以查看您应该使用用于在打印中追加的第一个变量

friends=["Rajendra V"]friends.append("John")print(friends)


查看完整回答
反对 回复 2019-05-31
  • 4 回答
  • 0 关注
  • 464 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信