给定
list1=[1,1,1,2,2,2,3,3,3,7,8,9,10,10,10]
list2=[1,1,2,3,8,10,10,10,13,13]
交集结果为
[1,1,2,3,8,10,10,10]
如果一个一个遍历的求交集虽然可以得到结果,但是会消耗很多时间,有没有高效的求交集方法,可以使用python自带的函数
list1=[1,1,1,2,2,2,3,3,3,7,8,9,10,10,10]
list2=[1,1,2,3,8,10,10,10,13,13]
# 得到每个数组中数字及对应的数量
s={n:len([x for x in list1 if x==n]) for n in list1}
t={n:len([x for x in list2 if x==n]) for n in list2}
# 取得数字的交集
b=list(set(s).intersection(set(t)))
# 根据s和t得到最终交集
r = [v for z in[[n for l in range(min(s[n],t[n]))] for n in b] for v in z]
print(r)
要想比较有相同元素,必须要遍历,不管是用python的函数。只是写法不同而已
list1=[1,1,1,2,2,2,3,3,3,7,8,9,10,10,10]
list2=[1,1,2,3,8,10,10,10,13,13]
x = [k for k in list2 if k in list1]
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!