如何从任意单词列表中移除含重复字母的单词?
过滤列表中含重复字母的单词
情况1:删除所有包含重复字母的单词(无论是否连续)
如果需求是只要单词内存在任意重复字母就删除,可通过对比单词长度与去重后字符长度实现:
def filter_unique_letters(words): # 转小写是为了统一大小写判断,若需区分大小写可去掉.lower() return [word for word in words if len(set(word.lower())) == len(word.lower())] # 测试示例 input_list = ['annotate','color','october','cellular','wingding','appeasement','sorta'] output_list = filter_unique_letters(input_list) print(output_list)
运行结果:['october', 'sorta']
情况2:删除包含连续重复字母的单词(匹配你的示例输出)
如果需求是仅删除存在连续重复字母的单词(比如annotate里的nn、appeasement里的pp),可用正则表达式匹配连续重复字符:
import re def filter_consecutive_duplicates(words): # 匹配任意连续重复的单个字符 pattern = r'(.)\1' return [word for word in words if not re.search(pattern, word)] # 测试示例 input_list = ['annotate','color','october','cellular','wingding','appeasement','sorta'] output_list = filter_consecutive_duplicates(input_list) print(output_list)
运行结果:['color','october','wingding','sorta']
说明
- 上述函数可直接处理任意动态生成的单词列表,无论是用户输入还是外部来源的数据,直接传入即可。
- 情况2的正则规则可根据需求调整,比如要匹配连续重复3次的字符,可修改为
r'(.)\1{2,}'。
内容的提问来源于stack exchange,提问作者Ben S.
相关产品推荐
相关产品推荐

