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

Python函数用range和len遍历split字符串时触发IndexError问题

移除填充词函数的索引错误修复

错误原因

  1. 索引越界:你用range(len(word_list))遍历列表索引的同时,在循环里执行word_list.remove(filler_word)修改了列表长度。原列表长度会随着元素移除而缩短,当循环到超出新长度的索引时,就会触发IndexError。
  2. 逻辑冗余:每次移除填充词就拼接字符串并累加到cleaned_sentence,会导致最终结果是多个中间版本的字符串叠加,完全不符合需求。
  3. 大小写匹配漏洞:只将输入单词转小写,但未处理填充词的大小写,若填充词是大写形式,会出现匹配失败的情况。

修复后的代码

def remove_filler_words(cleaned_string: str, filler_words: list):
    # 分割输入字符串为单词列表
    word_list = cleaned_string.split()
    # 将填充词转为小写集合,提升查找效率
    filler_set = {word.lower() for word in filler_words}
    # 过滤掉属于填充词的单词(大小写不敏感匹配)
    filtered_words = [word for word in word_list if word.lower() not in filler_set]
    # 拼接为最终字符串并返回
    return " ".join(filtered_words)

代码说明

  • 用集合存储填充词:集合的查找效率远高于列表,能更快判断单词是否为填充词。
  • 列表推导式过滤:避免在遍历原列表时修改它,从根源上解决索引越界问题。
  • 大小写统一处理:将填充词和输入单词都转为小写进行匹配,保证检查标准统一。
  • 直接返回拼接结果:一步到位生成最终字符串,避免原代码中的重复累加错误。

内容的提问来源于stack exchange,提问作者Terry Brooks Jr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:36:22