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

Python:如何筛选列表B中包含列表A元素的项?

解决Python列表筛选匹配问题

你的问题出在筛选逻辑错误:原代码里的x[0]是取字符串的第一个字符,而不是检查字符串是否包含listing里的子串,自然匹配不到'OVER'或'FLOW',所以返回空列表。

正确解法

使用any()函数结合列表推导式,检查每个文件名是否包含listing中的任意子串:

pklFilenamesList = [r'path\202206_DATASET_STACK_.pkl', r'path\202206_DATASET_OVER_.pkl', r'path\202206_DATASET_FLOW_.pkl']
listing = ['OVER','FLOW']

pickle = [x for x in pklFilenamesList if any(sub in x for sub in listing)]
print(pickle)

代码说明

  • any(sub in x for sub in listing):遍历listing中的每个子串,只要有一个子串存在于当前文件名x中,就返回True,该文件名会被保留到结果列表。
  • 注意:路径字符串中的反斜杠\在Python中是转义字符,建议用原始字符串前缀r(如r'path\...')或者双反斜杠\\避免转义问题。

预期输出

['path\\202206_DATASET_OVER_.pkl', 'path\\202206_DATASET_FLOW_.pkl']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:20:45