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

Python中位数计算器报错‘List Indices must be integer or slices, not float’求助

你的中位数计算器代码中的错误分析

核心错误点:

  • 未对列表排序:中位数的计算必须基于有序数据集,你的代码直接使用原无序列表,导致计算结果完全不符合中位数定义。比如测试用例[5,6,7,8,9,6,5,5]是无序的,直接取索引值无法得到正确中位数。
  • 偶数长度时的索引类型错误:当列表长度为偶数时,y = len(x)/2在Python中会返回浮点数(比如长度8时y=4.0),而列表索引只能是整数,这会触发TypeError: list indices must be integers or slices, not float。
  • 偶数长度时的数值选取错误:代码中x[y][-1]是完全错误的写法——x[y]是列表中的单个数值,并非可索引的序列。正确的做法应该是取排序后列表的中间两个数,即x[y-1]和x[y]。

修正后的代码:

def median(x):
    # 先对列表进行排序,这是计算中位数的前提
    sorted_x = sorted(x)
    length = len(sorted_x)
    if length % 2 == 0:
        # 偶数长度:取中间两个数的平均值
        mid_left = sorted_x[length//2 - 1]
        mid_right = sorted_x[length//2]
        return (mid_left + mid_right) / 2
    else:
        # 奇数长度:直接取中间位置的数
        return sorted_x[length//2]

l1 = [5, 6, 7, 8, 9, 6, 5, 5]
print(median(l1))  # 输出6.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:24:39