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

Python访问intervals[i][0]触发int类型不可下标错误排查

报错触发原因

这个TypeError: 'int' type is not subscriptable错误的本质是:你对整数类型的值执行了下标访问操作(即[0]/[1]这类索引写法),说明原本应当是List[List[int]]结构的intervals,在运行过程中被破坏了二维结构,出现了整数类型的顶层元素。

直接触发点

问题出在重叠区间合并时的列表拼接逻辑:

intervals = intervals[:i] + [minval,maxval] + intervals[i+1:]

你在这里直接把minval、maxval两个整数作为独立顶层元素拼接到了intervals列表里,而不是将合并后的新区间作为一个嵌套的子列表加入。
举个实际运行的例子:

  • 初始intervals = [[1,3],[6,9]],待插入newInterval = [2,5]
  • 第一次循环i=0时,判断为重叠,计算得minval=1、maxval=5
  • 执行拼接后得到的intervals = [] + [1,5] + [[6,9]] = [1,5,[6,9]]
    此时intervals的前两个元素都是整数,不再是子列表。当循环执行i自增到1,下一轮访问intervals[i][0]也就是intervals[1][0]时,intervals[1]是整数5,对整数做下标访问就会直接抛出你遇到的类型错误。

代码附带的其他逻辑问题

除了直接触发报错的拼接错误,你的代码还有几处逻辑缺陷会导致运行结果不符合预期:

  • 三个if判断是顺序执行的,即使前两个判断已经将var设为False,第三个重叠处理的逻辑依然会执行,分支判断失效
  • 重叠判断的条件使用了or,逻辑写反:区间无重叠才是「新区间右端小于当前区间左端」「新区间左端大于当前区间右端」两个条件满足其一,重叠是两个条件都不满足的场景
  • 合并区间后直接对i做自增是错误的,新合并出的区间可能和后续相邻区间依然存在重叠,需要继续判断不能直接跳过
  • 没有做数组越界判断,当i增长到超过intervals长度时会触发索引越界错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:57:12