You need to enable JavaScript to run this app. 如何生成包含指定子串的字符串列表?现有代码无法正确提取匹配结果
优惠活动
大模型
产品
解决方案
定价
更多

如何生成包含指定子串的字符串列表?现有代码无法正确提取匹配结果

代码问题定位

原代码的功能偏差来自两个核心逻辑错位:

  • any()仅返回匹配存在性的布尔判断结果,不保留匹配过程中的中间变量值
  • 代码在命中判断成立时,错误把any()内部遍历残留的临时变量item加入结果列表,而非当前正在校验的目标字符串test_string
  • 临时变量item在生成器执行完成后,会固定为test_list的最后一个元素,从根源上无法收集到正确的命中字符串
修正后可满足预期的代码
test_list = ['temp', 'temperature']
b = ['sunny', 'cloudy', 'stempy', 'temp','newtemperature']
hits = []
hit_name = []
for test_string in b:
    # 保留原有的存在性校验逻辑
    res = any(item in test_string for item in test_list)
    if res:
        # 修正append对象为当前遍历的命中字符串本身
        hit_name.append(test_string)
    hits.append(res)

# 打印结果
print('\n'*2, hits)
print('命中的字符串列表:', hit_name)

运行后hit_name的输出会完全匹配预期:['stempy', 'temp', 'newtemperature']

大规模场景优化建议

针对大规模字符串集合的处理需求,原有的逐次遍历匹配逻辑在数据量上来后会有明显的性能损耗,可以根据实际规模调整:

  • 对长度较大的test_list做预处理,减少每次循环的全量扫描次数
  • 如果不需要单独的布尔值列表hits,可以直接收集命中的字符串,减少冗余的列表操作
  • 当字符串规模达到百万级以上时,可替换为多模式匹配算法替代逐次any()校验,大幅降低整体匹配耗时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 03:36:04