【问题标题】:What is the difference in using append() in both of these cases? [closed]在这两种情况下使用 append() 有什么区别? [关闭]
【发布时间】:2017-01-07 20:07:51
【问题描述】:
lis = [1,2,3]

print(lis.append(4))
# Returns None

#############

lis = [1,2,3]

lis.append(4)

print(lis)
# Returns [1,2,3,4]

我找到了这段代码here,但我不明白为什么.append() 返回None。回答的人说是因为

.append() 更改列表并返回None

但这对我来说没有意义。我解释上面示例代码块的方式很简单,您必须先附加到列表中才能对其进行 rpint,但这与我在评估语句中的语句时对评估顺序的理解相悖。

【问题讨论】:

  • 有什么不明白的?您引用的链接问题完美地解释了它。 append 语句被求值,并返回 None。同时,列表发生了变化。
  • append 不是一个返回任何东西的数学函数。它是一组改变对象本身的指令。您期望的结果是什么?
  • 您认为评估顺序的哪一部分比较麻烦? print(lis.append(4)) 首先将 lis.append(4) 评估为 None,然后将其打印出来。
  • 哦,好的。抱歉,Python 新手!
  • 如果 5 个人给了我相同的答案,这个问题真的是“不清楚”吗?

标签: python list python-3.x append


【解决方案1】:

list 类型的数据类型是可变的,这意味着您可以直接更改对象而无需替换它。

这种质量允许appendextend 等方法进行打印。

当在对象上调用此类方法时,它们实际上会更改引用的对象,但不会返回任何内容 (None),因为我们需要它们的功能是更改对象,而不是返回输出。

当您评估print(lis.append(4)) 时,解释器调用lis.append(4) 更改lis 并返回None。现在,它开始打印评估的表达式 - print(None),这就是你得到的。

【讨论】:

    【解决方案2】:

    当使用append 方法时,它作用于lis 并附加到它。它通过引用而不是复制作用于lis

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 2022-01-03
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      相关资源
      最近更新 更多