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

Python如何基于一个列表移除另一列表中匹配前缀的元素且保留原值

问题原因

你之前的写法是遍历分割后的前缀列表lst3做过滤,返回的自然只有前缀内容,丢失了lst1的原始元素格式。

解决方案

直接遍历lst1的原始元素,对每个元素做前缀判断,符合条件的直接保留原始值即可:

lst1 = ['abc__2','def__3','xyz__3','pqr__1']
lst2 = ['def','xyz','tuv']
new_list = [item for item in lst1 if item.split("__")[0] not in lst2]

执行后得到的new_list就是预期的['abc__2', 'pqr__1']。
如果lst2数据量较大,可以先将其转为集合提升查询效率:

lst2_set = set(lst2)
new_list = [item for item in lst1 if item.split("__")[0] not in lst2_set]

优化后判断操作的时间复杂度从O(m)降到O(1),整体时间复杂度从O(n*m)降到O(n),数据量越大性能提升越明显。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:30:03