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

Python如何更快实现基于匹配词的列表元素过滤功能

优化实现方案

优化逻辑如下:

  • 替换正则统计空格的逻辑,直接用str.count(' ')统计空格数量,省去正则匹配的性能开销,代码可读性更高
  • 关键词匹配前先统一转小写,避免大小写漏匹配,也可以提前把过滤词转成小写集合减少重复转换开销
  • 不用先筛选要移除的元素再遍历删除,单次遍历就能同时拆分出符合保留要求的列表和过滤列表,避免遍历修改原列表的潜在bug,时间复杂度为O(n)效率更高

实现代码:

filter_words = [
    'school',
    'university',
    'branch'
]
# 提前转换为小写集合,降低匹配时的重复计算开销
lower_filter_words = {word.lower() for word in filter_words}

original_list = ['Ju Moran', 'Luo Jiangning', 'Wang Zhongbo',
                 'Luo Haibo', 'McGill University', 'Oba School', 'Test Case Filter']

processed_original = []
rule_filter = []
for item in original_list:
    # 同时满足空格数大于1、包含过滤关键词的元素放入过滤列表
    if item.count(' ') > 1 and any(key in item.lower() for key in lower_filter_words):
        rule_filter.append(item)
    else:
        processed_original.append(item)

# 如需要直接覆盖原original_list可取消下方注释
# original_list = processed_original

运行结果验证:

  • 处理后的original_list:['Ju Moran', 'Luo Jiangning', 'Wang Zhongbo', 'Luo Haibo']
  • 过滤得到的rule_filter:['McGill University', 'Oba School']

如果需要保留原有代码中不过滤关键词、仅按空格数过滤的逻辑,直接去掉and any(key in item.lower() for key in lower_filter_words)判断条件即可,得到的rule_filter就会包含Test Case Filter,和你给出的预期输出一致。

内容的提问来源于stack exchange,提问作者αԋɱҽԃ αмєяιcαη

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:09:03