不使用Python内置max/min函数提取列表最大最小值存入单独列表的实现方法
问题原因分析
- 初始值设置不合理:你把
res_max、res_min的初始值固定为[0],如果输入列表全为负数,结果会完全错误。 - 比较逻辑错误:求最值时仅和列表的前一个相邻元素比较,没有和当前已经记录的最值对比,自然没法得到全局的最小/最大值。
- 冗余代码:代码中的
while循环搭配break没有实际作用,等价于直接执行循环体内的代码,完全可以删掉。
原生Python实现方案
下面的实现仅用Python基础语法,没有调用内置min/max函数,也兼容空列表、单元素列表、全负值列表等边界场景:
inp_list = [1, 2, 3, 4, 78, 5, 7, 90] # 处理空列表边界 if not inp_list: res_max = [] res_min = [] else: # 初始最值取列表第一个元素,避免固定初始值的缺陷 current_max = inp_list[0] current_min = inp_list[0] for num in inp_list: # 逐个元素和当前最值比对,符合条件就更新 if num > current_max: current_max = num if num < current_min: current_min = num # 存入对应独立列表 res_max = [current_max] res_min = [current_min]
运行后输出:res_max结果为[90],res_min结果为[1],符合需求。
内容的提问来源于stack exchange,提问作者user17153595
相关产品推荐
相关产品推荐

