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

迭代字符串时出现list index out of range错误的解决方法咨询

「list index out of range」错误(迭代字符串场景)解决方法

list index out of range 本质是你访问的索引值超出了序列的合法下标范围,字符串、列表这类序列的合法下标范围是 0 到 len(序列)-1,只要索引值不在这个区间就会触发该错误。

常见触发原因&对应解决方法

  • 手动索引遍历边界设置错误

    常见错误写法:循环边界多写了一位,比如 for i in range(len(s)+1)、while i <= len(s),最后一次循环的索引等于序列长度,超出合法范围。
    解决方法:调整循环边界为小于等于 len(s)-1,比如 for i in range(len(s))、while i < len(s)。

  • 迭代过程中修改了原序列长度

    如果迭代时你将字符串转为列表操作,中途执行了pop()、remove()、del操作删除元素,会导致序列长度变短,但索引还是按原始长度遍历,就会触发越界。
    示例错误代码:

    s_list = list("abcdef")
    for i in range(len(s_list)):
        if s_list[i] == 'd':
            s_list.pop(i)
    

    解决方法:

    1. 优先使用无索引迭代:直接按值遍历字符串 for char in s:,不需要手动维护索引,天然不会出现越界问题
    2. 必须修改原序列时选择倒序遍历:for i in range(len(s_list)-1, -1, -1),倒序删除元素不会影响未遍历部分的索引
    3. 直接生成新序列:用列表推导式生成符合要求的新序列,不需要修改原序列,示例:new_list = [char for char in s_list if char != 'd']
  • 访问字符串拆分结果未做长度校验

    如果你用split()等方法拆分字符串后直接访问指定位置的下标,比如split_result[1],但拆分后的列表长度不足,就会触发越界。
    解决方法:访问拆分结果的下标前先校验长度,比如确认len(split_result) >= 2后再访问下标1。

错误截图

错误截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:45:02