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

比如两个列表
test1 = ['a1', 'b2']
test2 = ['a1_001', 'a1_002', 'a1_003', 'a2_001', 'a3_001', 'b2_001']
只取test2列表中所有元素的前2位跟另一个数组做比较,最终过滤出来的结果是['a2_001', 'a3_001']
我自己写的是用循环来处理,但是当数据量高达几百万,循环百万次需要花个把小时,效率太低.
之前写一个小脚本检查两个文件中的内容重复,直接导入成集合,然后做差集,上千万数据分分钟就能搞定,但是现在两组数据长度不一样,这总方法貌似行不通
本人自学python半年,接触的太浅,望大佬提点一二!

#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,感谢老哥回答!

温馨提示:答案为网友推荐,仅供参考
相似回答