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

Python 'list index out of range'错误的常见修复方案

GC含量检测程序越界错误修复

原代码共存在1处直接触发报错的问题、2处逻辑错误,具体修复点如下:

  • 索引越界修复:Python序列索引从0开始,有效索引最大值为len(序列)-1,原循环条件while m <= len(g)会访问不存在的g[len(g)]位置触发报错,需修改为while m < len(g)。
  • 计数逻辑修复:原代码将countA/countT/countC/countG四个计数器放在while循环内初始化,每遍历一个碱基就会重置之前的计数,最终仅能统计最后一个碱基的数量,GC含量计算结果完全错误,需将计数器初始化移动到while循环外侧、单条序列遍历的起始位置。
  • 返回逻辑修复:原代码将return new_z写在for循环内部,处理完第一条序列就会终止函数,后续序列不会被执行检测,需将return语句移动到for循环外侧,待所有序列处理完成后再返回结果。

修复后完整代码

def test_gc(z):
    new_z = []
    for g in z:
        m = 0
        countC = 0
        countA = 0
        countG = 0
        countT = 0
        # 修正循环边界,避免索引越界
        while m < len(g):
            if g[m] == "C":
                countC += 1
            elif g[m] == "A":
                countA += 1
            elif g[m] == "G":
                countG += 1
            elif g[m] == "T":
                countT += 1
            m += 1

        total_base = countG + countC + countA + countT
        # 跳过空序列避免除零错误
        if total_base == 0:
            continue
        gccontent = ((countG + countC) / total_base) * 100
        if 40 < gccontent < 60:
            new_z.append(g)
    # 所有序列处理完成后再返回结果
    return new_z

补充优化:新增空序列校验,避免传入空序列时触发除零报错;将原else分支统计T改为显式匹配T碱基,避免非法字符被误统计为T影响结果准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:51:20