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

求两个有序数组中位数时触发TypeError:列表索引需为整数而非浮点数

列表索引类型错误的原因及修复方案

错误原因

你代码里的问题出在除法运算符的使用上:在Python 3中,/执行的是浮点除法,哪怕两个整数相除,结果也会是浮点数类型。比如当合并后的数组长度为奇数(比如测试用例里的3)时,len(nums1)/2计算得到的是1.5,这是一个浮点数。而列表的索引必须是整数或切片,用浮点数作为索引自然会触发TypeError: list indices must be integers or slices, not float错误。

修复方法

把代码中的/替换为//(整数除法),它会返回向下取整的整数结果,完全符合中位数的索引计算需求:

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        nums1.extend(nums2)
        nums1.sort()
        length = len(nums1)
        if length % 2 == 0:
            a = length // 2
            return float(nums1[a] + nums1[a-1]) / 2
        else:
            a = length // 2
            return float(nums1[a])

if __name__ == "__main__":
    p = [1,3]
    t = [2]
    print(Solution().findMedianSortedArrays(p,t))  # 输出2.0
    p2 = [1,2]
    t2 = [3,4]
    print(Solution().findMedianSortedArrays(p2,t2))  # 输出2.5

验证说明

  • 测试用例1:合并后数组为[1,2,3],长度3,3//2=1,取nums1[1]即2,返回2.0,符合预期。
  • 测试用例2:合并后数组为[1,2,3,4],长度4,4//2=2,取nums1[2]和nums1[1]求和后除以2,得到2.5,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:50:20