【发布时间】:2020-05-26 06:33:48
【问题描述】:
我正在尝试编写一个递归函数,该函数将从提供的列表中返回最大值。我有一些代码正在尝试测试,但它引发了以下错误:
line 10, in array_max
if pos == len(num_list):
TypeError: object of type 'NoneType' has no len()
我从一些探索中收集到 num_list = num_list.sort() 正在返回 None。我不知道为什么。以下是我当前的功能:
def array_max(num_list, pos = 0):
num_list = num_list.sort()
if pos == len(num_list):
return num_list[pos]
counting = array_max(num_list, pos+1)
return counting
l1 = [5,6,3,44,1,-5]
test = array_max(l1)
print(test)
为了澄清,我不是在寻找有关其他功能的建议。我只是对为什么会收到此错误感到困惑。谢谢。
【问题讨论】:
-
见realpython.com/python-sort,特别是
sort() returns None and modifies the values in place。 -
如果您已经对数组进行了排序并且知道最后一个元素将包含最大值,为什么还需要递归?
-
@Black0ut 坦率地说,我只是想找出一种方法来让递归函数返回列表中的最大值。只要我能做到,我对如何做到这一点并不特别。这可能不是一个很好的方法,但这是我想到的方法。
-
@kaya3 这很有帮助。谢谢。