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

Python如何按规则筛选句子token且保留原有排列顺序?

代码问题分析与优化方案

原有代码的问题

第一段代码

  • 三层嵌套循环的判断逻辑存在漏洞:只要句子包含任意一个屏蔽词,且遍历到任意一个不存在于句子中的必填词,就会触发删除逻辑。也就是说只要句子不是包含所有必填词,哪怕已经包含了其中一个必填词,也会被误删,完全不符合规则2的要求。
  • 遍历过程中重复删除列表元素,还会导致部分句子被漏判,同一句子匹配多个关键词时也会被重复加入结果列表。

第二段代码

  • 列表推导式的判断条件写法错误:not (i in fact for i in avoid)中的生成器对象布尔值永远为True,导致所有符合规则1的句子都会被过滤掉。
  • 先过滤再追加符合规则2的句子,会导致符合规则2的句子被重复添加,自然打乱了原有的句子顺序。

最优实现方案

仅需遍历一次原句子列表即可完成筛选,完全保留原有顺序,逻辑清晰且效率更高:

facts = []
for sent in sentences:
    # 不包含任意关键词的句子直接跳过
    if not any(keyword in sent for keyword in keywords):
        continue
    # 包含任意必填词直接保留(规则2优先级更高)
    if any(essential in sent for essential in essentials):
        facts.append(sent)
        continue
    # 无必填词的情况下,不包含任何屏蔽词则保留(规则1)
    if not any(avoid_word in sent for avoid_word in avoid):
        facts.append(sent)

内容的提问来源于stack exchange,提问作者Ashraya Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:36:02