如何在Python中移除包含连续三个相同字母的单词?
高效过滤含连续三个相同字母的单词(Python实现)
处理数万条单词时,纯Python手动遍历检查的效率远不如用预编译正则表达式——因为Python的re模块底层是C实现的,字符串匹配效率极高,完全适配你的大列表场景。
核心方案
用正则匹配连续三个相同字符,预编译后批量过滤:
- 预编译正则表达式
(.)\1{2}:匹配任意字符,且该字符连续出现至少3次(\1表示引用前面匹配的字符,{2}表示再重复2次,加上首次匹配就是3次) - 遍历单词列表,保留不包含该匹配模式的单词
代码实现
import re # 预编译正则,仅需执行一次,大幅提升批量匹配效率 triple_char_pattern = re.compile(r'(.)\1{2}') # 假设你的原始单词列表为word_list filtered_words = [word for word in word_list if not triple_char_pattern.search(word)]
为什么这比手动遍历高效?
- 预编译正则避免了每次匹配都重新解析表达式的开销,对大列表来说节省的时间非常可观
re.search()是C级别的字符串扫描,比纯Python写的循环(逐个字符对比前两个)快数倍甚至数十倍- 列表推导式是Python中效率最高的迭代构造方式之一,比手动
for循环加append更简洁高效
可选的过滤方式(性能接近)
如果习惯用filter函数,也可以这么写:
filtered_words = list(filter(lambda w: not triple_char_pattern.search(w), word_list))
内容的提问来源于stack exchange,提问作者Wayne Filkins
相关产品推荐
相关产品推荐

