递归无法连接 'int' 和 'NoneType' - 如何将 'NoneType' 更改为 'int'?

recursion cannot concatenate 'int' and 'NoneType' - how to change 'NoneType' to 'int'?

我正在尝试对二进制列表进行排序,它应该像这样工作:

>>> blsort([1, 0, 1]) 
[0, 1, 1]

所以我做了这个代码:

def blsort(L):
if L == []:
    return []
elif L[0] == 0:
    L.insert(0, 0)
else:
    L.append(1)
    return L[0] + blsort(L[1:]) 

但我只得到这个错误:

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

所以不知何故这段代码 returns 变成了 NoneType,我无法将它与 int 连接成 list

我假设 blsort(L[1:])NoneType 类型。我该怎么做才能使它成为 int 类型,以便我可以将它与另一个 int 连接到 list

在第二个 if 条件之后,您没有 returning 任何东西:

elif L[0] == 0:
    L.insert(0, 0)

所以当执行这条语句时,blsort 的 return 是 None,这会导致错误。

return L[0] + blsort(L[1:])

感谢您的回答,这确实是解决方案的一部分。解决方案的第二部分是写 [0](所以 '0' 作为列表项)而不是 L[0].

这里的代码修复了它:

def blsort(L):
if len(L) == 0:
    return []
elif L[0] == 0:
    return [0] + blsort(L[1:])
else:
    return blsort(L[1:]) + [1]