【问题标题】:TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' [duplicate]TypeError:+的不支持的操作数类型:'NoneType'和'list'[重复]
【发布时间】: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) &lt; 2,这个函数会返回什么?
  • 使用不带任何值的return 将返回None。这可能不是你想要做的。
  • pivot 、 sort 和 greator 不是字符串,不能使用这种格式和 + ,可以使用 ( , ) 代替 + 。 return quicksort(less) , [pivot] , quicksort(greater)

标签: python python-3.x


【解决方案1】:
def quicksort(array):
    if len(array) < 2:
        return array
    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小于2,则需要返回数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2017-12-27
    • 2014-03-31
    • 2017-06-06
    • 2021-05-23
    • 2014-03-28
    相关资源
    最近更新 更多