python unexpected AttributeError



我对python很陌生,作为练习,我编写了一个简单的反向函数。

代码:

def m_reverse(x):
     if len(x) == 1:
             return x
     return m_reverse(x[:-1]).insert(0,x[-1])

当我尝试它时,我会得到以下信息:

>>> m_reverse([1,2,3,4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in m_reverse
  File "<stdin>", line 4, in m_reverse
AttributeError: 'NoneType' object has no attribute 'insert'

我犯了什么错?我缺少什么关键数据?

对于python内置函数,如果函数在适当的位置更改了参数,按照惯例,它将返回None。因此,由于.insert对列表进行了变异,因此它返回None

您的想法很好,我认为逻辑是有意义的——从实现的角度来看,您可以使用列表串联:,而不是使用insert

def m_reverse(lst):
    if len(lst) == 1:
       return lst
    else:
       return [lst[-1]] + m_reverse(lst[:-1])
       # return lst[-1:] + m_reverse(lst[:-1]) would also work.

最新更新