You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从包含inf的混合列表中提取最大、最小浮点数值

从含inf的列表中提取最大/最小浮点数的代码优化

原代码存在的问题

  • 初始值设置不合理:lowest和highest初始化为0,若列表中有效数值均大于0,lowest会错误保留0;若存在负数,highest的初始值也会导致结果错误。
  • 多余的非负限制:i >=0会过滤掉负数有效数值,不符合题目仅排除inf的要求。
  • 变量名冲突:使用list作为变量名覆盖了Python内置类型,属于不规范写法。
  • 未处理边界情况:若列表全为inf,当前代码会返回无意义的[0,0],缺乏异常处理。

优化后的代码(简洁高效版)

利用Python内置函数直接处理,逻辑清晰且不易出错:

# 避免使用内置类型名list,改用nums作为变量名
nums = (float('inf'), float('inf'), float('inf'), 0.9, 0.5, 2.5, 3.5, 4.9, 9.9, 0.2)

def get_highest_lowest():
    # 过滤掉所有inf,得到有效浮点数值列表
    valid_nums = [num for num in nums if num != float('inf')]
    
    # 处理全是inf的边界情况
    if not valid_nums:
        raise ValueError("列表中没有有效的浮点数值")
    
    # 用内置max、min函数直接获取结果
    highest = max(valid_nums)
    lowest = min(valid_nums)
    
    return [highest, lowest]

# 测试调用
print(get_highest_lowest())  # 输出: [9.9, 0.2]

手动循环实现版(适合学习理解)

如果需要手动遍历实现,可参考以下代码:

nums = (float('inf'), float('inf'), float('inf'), 0.9, 0.5, 2.5, 3.5, 4.9, 9.9, 0.2)

def get_highest_lowest():
    valid_nums = []
    # 先筛选出非inf的数值
    for num in nums:
        if num != float('inf'):
            valid_nums.append(num)
    
    if not valid_nums:
        raise ValueError("列表中没有有效的浮点数值")
    
    # 以第一个有效数值为初始值
    lowest = valid_nums[0]
    highest = valid_nums[0]
    
    # 遍历有效数值更新最大、最小值
    for num in valid_nums:
        if num < lowest:
            lowest = num
        if num > highest:
            highest = num
    
    return [highest, lowest]

内容的提问来源于stack exchange,提问作者NasserCzar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:50:24