首页 > 解决方案 > 检查列表与列表推导重叠

问题描述

我在 python 中有一个脚本,它生成 2 个不同大小的随机列表,并返回第三个列表,该列表仅包含使用列表推导的 2 个列表之间共有的元素(没有重复项

例子:

a = [3, 8, 9, 6, 5, 3, 7, 8, 2, 10]
b = [7, 13, 20, 12, 12, 2, 6, 1, 2, 8, 19, 3, 15, 16, 14, 22, 22, 4, 9, 15, 8, 13]

我的结果列表是

c = [7, 2, 6, 2, 8, 3, 9, 8]

但应该是

c = [7, 6, 2, 8, 3, 9]

这是我所做的:

c = [i for i in max(a, b) if i in min(a, b) and i not in c]

提前致谢!

标签: pythonlist-comprehensionoverlap

解决方案


您可以通过以下方式使用集合:

c = list(set(a).intersection(set(b)))

这会给你:

[2, 3, 6, 7, 8, 9]

这是有效的,因为set项目是无序的、不可更改的,并且不允许重复值。intersection将其与您将获得结果的方法相结合。


推荐阅读