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

编写求中位数函数时持续报“索引为浮点数而非整数”错误求助

解决"index a float not integer"错误:中位数函数修正

嘿,我一眼就看到问题所在啦!你遇到的报错完全是因为列表索引必须是整数,但你代码里用了浮点数来计算索引——和列表里的元素是不是整数没关系哦😉

错误原因分析

你代码里的这几行是问题核心:

# 偶数情况的索引计算
sorted_lst[0.5*len(sorted_lst)]
sorted_lst[(0.5*len(sorted_lst))-1]

# 奇数情况的索引计算
sorted_lst[0.5*((len(sorted_lst))-1)]

比如当列表长度是4时,0.5*4=2.0,这是个浮点数,Python不允许用浮点数作为列表的索引值,哪怕它的数值等于整数也不行。

修正后的代码

我们可以用Python的**整数除法//**来计算索引,它会直接返回整数结果,完美解决这个问题:

def median(lst):
    sorted_lst = sorted(lst)
    length = len(sorted_lst)
    if length % 2 == 0:
        # 用整数除法获取两个中间元素的索引
        mid_right = length // 2
        mid_left = mid_right - 1
        even_median = 0.5 * (sorted_lst[mid_left] + sorted_lst[mid_right])
        return even_median
    else:
        # 奇数长度时,整数除法直接得到中间元素的索引
        odd_median = sorted_lst[length // 2]
        return odd_median

关键改动说明

  • 偶数长度场景:length//2会得到中间靠右的元素索引(比如长度4时,4//2=2),mid_right-1就是中间靠左的索引(1),两个都是整数,合法可用。
  • 奇数长度场景:比如列表长度是5,5//2=2,正好是从0开始计数的中间元素索引,直接取值即可。

这样修改后,你的函数就能正常计算中位数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:35:03