我有这个函数gensort
和remAll
:
def gensort(L):
""" Sorts list L in ascending order
"""
if len(L) == 0:
return 0
else:
z = min(L)
L = remAll(z, L)
return [z] + gensort(L)
def remAll( e, L ):
""" Helper function for gensort(), removes all e in L.
"""
if len(L) == 0:
return L
elif L[0] != e:
return L[0:1] + remAll(e,L[1:])
else:
return remAll(e,L[1:])
当我运行gensort
时,我得到一个错误
can only concatenate list (not 'int') to list.
remAll
工作正常。如果我试图创建一个空列表来添加z
,我会得到一个不同的错误。在
您的错误源于基本情况检查,其中
return 0
。把空名单还给我就行了如果没有特殊原因在你的删除函数中使用递归,我可以建议你吗
另外,这种排序方法可以删除重复项。在
问题是因为递归的基本情况返回的是
0
,而不是空列表。更改以下代码:到
^{pr2}$而且应该有效。在
在A行中,如果L为空,则返回数字0。因此,在递归调用之后,您将在B行中得到
[z] + 0
,这是一个错误,因为您不能添加列表和数字。在你应该返回一个空列表,你应该写下来
^{pr2}$对于A线
相关问题 更多 >
编程相关推荐