python 给定两个List求交集

给定
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]
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^