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

range范围条件满足时仍出现index error索引错误的原因是什么?

错误原因分析
  • 核心问题出在更新oxy_val的列表推导式逻辑错误:错误提取了字符串的单个字符作为新的oxy_val元素,而非保留完整的原始字符串。
    你编写的错误逻辑:
    oxy_val = [val[num] for val in oxy_val if val[num] == '0']
    
    这行代码执行后,oxy_val的元素从原本长度为12的二进制字符串,变成了长度为1的单个字符('0'或'1')。当下一轮for num in range(12)循环中num取值大于等于1时,访问val[num]自然会触发string index out of range报错。
  • 次要逻辑冗余:你把for num in range(12)放在了while循环内部,哪怕oxy_val已经筛选到只剩1个元素,依然会继续跑完剩下的num循环,属于多余逻辑,但这不是报错的直接原因。
修复方案

把列表推导式里的返回值从val[num]改成val即可,同时可以把for num循环的逻辑调整为逐位递进,避免多余遍历:

lines = ['110011110101','110011100010','010100011010','011001100000','010011011101','011110111000']
oxy_val = lines.copy()
num = 0
while len(oxy_val) > 1 and num < 12:
    ones = 0
    zeroes = 0
    for val in oxy_val:
        if val[num] == '0':
            zeroes+=1
        elif val[num] == '1':
            ones+=1
    if zeroes > ones:
        oxy_val = [val for val in oxy_val if val[num] == '0']
    else:
        oxy_val = [val for val in oxy_val if val[num] == '1']
    num += 1
            
print(oxy_val)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:06:07