不使用max函数查找列表最大值,空列表需返回None的问题
解决空列表返回None且不调用max函数的最大值查找问题
修复原代码的方案
你的代码核心问题是空列表时,排序后的列表仍为空,取[-1]会触发索引越界错误。只需要先判断输入列表是否为空,为空直接返回None即可。同时可以简化原代码里的冗余逻辑(没必要重新复制列表):
SURVEY_RESULTS = [25,30,100,88,56] def maximum(x): if not x: # 检查列表是否为空 return None sorted_list = sorted(x) # 生成排序后的新列表,不修改原输入 return sorted_list[-1] print(maximum(SURVEY_RESULTS)) # 输出 100 print(maximum([])) # 输出 None
更高效的遍历比较方案
排序的时间复杂度是O(nlogn),如果处理大数据量,直接遍历逐个比较的效率更高(时间复杂度O(n)),实现如下:
def maximum(x): if not x: return None max_val = x[0] for num in x[1:]: if num > max_val: max_val = num return max_val
这个方法的逻辑是:先判断空列表返回None,然后把第一个元素作为初始最大值,之后遍历列表剩余元素,每次遇到更大的值就更新最大值,最后返回结果。
内容的提问来源于stack exchange,提问作者emvirgen
相关产品推荐
相关产品推荐

