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

如何解决求列表中位数时出现的TypeError类型错误

问题分析与解决

错误原因

你遇到的TypeError: list indices must be integers or slices, not float,根源是Python3中/运算符执行的是浮点数除法——哪怕计算结果是整数(比如示例里列表长度6,6/2得到3.0),返回值也是浮点数类型。而列表索引必须是整数,用浮点数当索引自然触发错误。

修复方案

把midIndex = len(list)/2改成整数除法midIndex = len(list)//2,//会直接返回舍去小数部分的整数结果,完美适配列表索引要求。

修复后的median函数:

def median(list):
    if len(list) == 0:
        return 0
    list.sort()
    midIndex = len(list) // 2  # 替换为整数除法
    if len(list) % 2 == 0:
        return (list[midIndex] + list[midIndex - 1]) / 2
    else:
        return list[midIndex]

验证结果

运行修改后的代码,测试列表[3, 1, 7, 1, 4, 10]排序后为[1,1,3,4,7,10],midIndex=3,取索引3和2的元素4与3,计算(4+3)/2=3.5,和预期结果完全一致。

额外优化建议

  • mean函数里的list.sort()是多余操作,求和不需要依赖列表顺序,删掉能提升运行效率。
  • 避免用list作为参数名,它是Python内置类型,会覆盖内置函数,建议改成nums或data这类通用名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:38