在这里,我使用简化的代码来演示遇到的问题:

def recTry(inList):
    print(inList)
    if len(inList) < 10:
        recTry(inList.append(1))


我希望通过递归可以像[1][1, 1][1, 1, 1]一样增长...
但实际上运行将产生以下结果:

>>> recTry([1])
[1]
None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in recTry
  File "<stdin>", line 3, in recTry
TypeError: object of type 'NoneType' has no len()


自第二次递归以来,inList变为None
那么,我该如何编码以使inList随每次递归追加?

最佳答案

inList.append(1)返回None,因此在递归时传递None

您可以做的是:

def recTry(inList):
    print(inList)
    if len(inList) < 10:
        inList.append(1)
        recTry(inList)
    else:
        return inList

关于python - 递归无法追加列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45626740/

10-13 07:49