【发布时间】:2020-12-25 13:46:12
【问题描述】:
我直接从一本书中编写此代码,但出现此错误。我尝试将变量分配给快速排序 less、greater 和 [pivot],然后尝试添加它,但它仍然不起作用。这是代码,错误消息是“ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'”
def quicksort(array):
if len(array) < 2:
return
else:
pivot = array[0] #Recursive case
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
print(quicksort([10, 5, 2, 3]))
【问题讨论】:
-
提示:如果
len(array) < 2,这个函数会返回什么? -
使用不带任何值的
return将返回None。这可能不是你想要做的。 -
pivot 、 sort 和 greator 不是字符串,不能使用这种格式和 + ,可以使用 ( , ) 代替 + 。 return quicksort(less) , [pivot] , quicksort(greater)
标签: python python-3.x