递归无法连接 '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]
我正在尝试对二进制列表进行排序,它应该像这样工作:
>>> 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]