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

Python中如何移除列表中与另一列表存在相同前缀的元素

问题描述

我有两个Python列表:

list_1 = ["ABC_123,Hello,World", "DEF_456,Hello,World"]
list_2 = ["ABC_123,Something,Else", "KOR_729,Something,Else"]

需要移除list_1中那些**前缀(逗号分隔的第一部分)**和list_2里任意元素前缀相同的项,最终得到的结果应该是:

list_3 = ["DEF_456,Hello,World"]
解决方案

步骤1:提取list_2里的所有前缀

先把list_2中每个元素的前缀(逗号前的部分)提取出来,存成一个集合——集合的查询速度比列表快很多,数据量大的时候优势更明显:

prefixes = {item.split(',')[0] for item in list_2}

步骤2:过滤list_1

遍历list_1,只保留前缀不在上面集合里的元素:

list_3 = [item for item in list_1 if item.split(',')[0] not in prefixes]

完整可运行代码

list_1 = ["ABC_123,Hello,World", "DEF_456,Hello,World"]
list_2 = ["ABC_123,Something,Else", "KOR_729,Something,Else"]

# 提取list_2的前缀集合
prefixes = {item.split(',')[0] for item in list_2}
# 过滤得到目标列表
list_3 = [item for item in list_1 if item.split(',')[0] not in prefixes]

print(list_3)  # 输出: ['DEF_456,Hello,World']

补充说明

  • split(',')[0]的作用是把字符串按逗号分割,取第一部分,确保只匹配前缀,不会误判逗号后面的内容
  • 如果你的前缀分隔符不是逗号,只需要把split(',')里的逗号换成对应的分隔符就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:05:25