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

Python处理life-expectancy.csv求取life_expectancy列最大最小值方法

代码修正说明

核心错误原因

原代码输出异常是两个逻辑问题叠加导致的:

  • 遍历CSV行的循环没有保存每一行解析得到的预期寿命数值,循环结束后split_data仅保留了文件最后一行的拆分结果。
  • 此时对split_data[3]调用max()/min(),本质是对单条预期寿命的字符串做逐字符ASCII值比较,最终返回的是字符串里的单个字符,自然出现最大值是'9'、最小值是'.'的错误结果。

具体调整内容

  • 提前初始化两个追踪变量,用来全程记录遍历过程中遇到的最大、最小预期寿命值。初始值设置为符合常识的边界值(比如最大值初始设为0,最小值初始设为100,远偏离正常人类预期寿命的取值范围,不会干扰真实值比较)。
  • 将数值比较逻辑移入for循环内部:每解析完一行的预期寿命浮点值,就和当前记录的最大、最小值做对比,满足更大/更小的条件就更新追踪变量。
  • 循环遍历完成后,直接输出已经记录好的最大、最小值即可。

修正后可运行代码

# 初始化极值追踪变量
max_expectancy = 0
min_expectancy = 100

with open('data/life-expectancy.csv') as life_expectancy:
    # 跳过表头行
    next(life_expectancy)
    for data in life_expectancy:
        clean_data = data.strip()
        split_data = clean_data.split(',')

        # 按列顺序解析字段
        entity = split_data[0]
        code = split_data[1]
        year = split_data[2]
        expectancy = float(split_data[3])
        
        # 循环内实时更新极值
        if expectancy > max_expectancy:
            max_expectancy = expectancy
        if expectancy < min_expectancy:
            min_expectancy = expectancy
              
print(f'The overall max life expectancy is: {max_expectancy}')
print(f'The overall min life expectancy is: {min_expectancy}')

可选简化实现

如果不想手写比较逻辑,也可以在遍历过程中把所有解析好的预期寿命值存入列表,循环结束后直接调用内置的max()/min()计算,结果完全一致:

all_expectancies = []
with open('data/life-expectancy.csv') as f:
    next(f)
    for row in f:
        split_row = row.strip().split(',')
        all_expectancies.append(float(split_row[3]))

print(f'整体预期寿命最大值: {max(all_expectancies)}')
print(f'整体预期寿命最小值: {min(all_expectancies)}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 09:36:08