python两个列表(或集合、字典)进行比较,如果一个列表中的几位在另一个列表中出现,则删除这些项

比如两个列表test1=['a1','b2']test2=['a1_001','a1_002','a1_003','a2_001','a3_001','b2_001']只... 比如两个列表
test1 = ['a1', 'b2']
test2 = ['a1_001', 'a1_002', 'a1_003', 'a2_001', 'a3_001', 'b2_001']
只取test2列表中所有元素的前2位跟另一个数组做比较,最终过滤出来的结果是['a2_001', 'a3_001']
我自己写的是用循环来处理,但是当数据量高达几百万,循环百万次需要花个把小时,效率太低.
之前写一个小脚本检查两个文件中的内容重复,直接导入成集合,然后做差集,上千万数据分分钟就能搞定,但是现在两组数据长度不一样,这总方法貌似行不通
本人自学python半年,接触的太浅,望大佬提点一二!
展开
 我来答
我心我在
2019-06-26 · TA获得超过2157个赞
知道小有建树答主
回答量:784
采纳率:77%
帮助的人:631万
展开全部
#coding=utf-8
#py2.7
test1 = ['a1', 'b2']
test2 = ['a1_001', 'a1_002', 'a1_003', 'a2_001', 'a3_001', 'b2_001']
print filter(lambda x:x[:2] not in test1,test2)
#我是按照你给的例子来写的代码,这样只循环了 test2长度的次数
#“现在两组数据长度不一样”,不太明白这句话对于你的逻辑有啥影响
追问
老哥,用你这个方法处理35W数据花了600s,这个效率也不太高,因为我的test2列表有上百万数据,只要涉及到循环就慢的1B,感谢老哥回答!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式