Python代码删除含重复字母的字符串元素结果不符,求排查错误
问题:删除含重复字母的字符串元素时代码出错
需求:删除字符串中包含重复字母的元素,现有Python代码如下:
String1 = "Python is an interpreted high level general purpose programming language" List1 = String1.split() for i in List1: for j in i: if i.count(j)>1: List1.remove(i) break print(" ".join(List1))
代码运行输出:
Python is an high general programming
预期输出:
Python is an
错误原因
遍历列表的同时直接修改列表(删除元素),会导致迭代器跳过部分元素。Python的for循环基于列表索引迭代,删除元素后列表后续元素前移,循环索引仍按原顺序推进,导致部分元素完全没被检查。
比如high包含重复的'h'本该被删除,但前面的interpreted被删除后,high前移到原位置,循环直接跳过了对它的检查,最终错误保留。同理general、programming这些含重复字母的元素也因遍历遗漏被保留。
另外,原代码用i.count(j)逐个检查字符的方式效率较低,每次count都会遍历整个单词,时间复杂度为O(n²)。
修正方案
创建新列表存储符合条件的元素,遍历原列表时不修改它,确保每个元素都被检查到。同时用集合去重的方式快速判断单词是否有重复字母(集合长度和原单词长度相等则无重复):
String1 = "Python is an interpreted high level general purpose programming language" List1 = String1.split() filtered_words = [] for word in List1: # 集合自动去重,长度相等说明无重复字母 if len(set(word)) == len(word): filtered_words.append(word) print(" ".join(filtered_words))
运行后输出符合预期:
Python is an
内容的提问来源于stack exchange,提问作者mounica gvs
相关产品推荐
相关产品推荐

