【问题标题】:Is it possible to use an append function in a return statement for purposes of a recursive procedure in Python是否可以在返回语句中使用附加函数来实现 Python 中的递归过程
【发布时间】:2016-11-05 12:46:08
【问题描述】:

是否可以在 return 语句中使用 append 函数?

如果我说:

def test_func(n):
a=[1,2,3]
a.append(n)
return a

print test_func(6)

我明白了:

[1,2,3,6]

但如果我说:

def test_func(n):
a=[1,2,3]
return a.append(n)

print test_func(6)

我明白了:

None

我想要这个的原因是因为我想编写一个递归函数,它在达到基本情况之前调用自身,但是对于它执行的每个循环,我想将该结果附加到一个列表中。

所以我想尝试以下方式:return a.append(func(new_input))

基本上,我在上面的例子中做错了吗?还是不能在return语句中追加。

【问题讨论】:

  • 追加返回无。有两条线有什么问题?
  • 同意:改变序列的方法总是返回ˋNone. For instance: append, extend, sort`...
  • 正在附加在return语句中,所以显然这是可能的。

标签: python return append


【解决方案1】:

您可以通过调用__iadd__ 来替换append

def test_func(n):
    a = [1, 2, 3]
    return a.__iadd__([n])

这应该可行。

但我不明白你为什么不使用你的第一个想法。

【讨论】:

    【解决方案2】:

    append 函数不返回任何值,而是更新现有列表。

    在您的第一个实现中,您将返回列表 a,在您的第二个实现中,您将返回函数 append 的返回值(始终返回 None)。

    所以,答案是:函数 append 不可能在 return 语句中并且按照你想要的方式工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多