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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:43:22