检查列表与列表理解重叠
我在 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]
提前致谢!
回答
您可以通过以下方式使用集合:
c = list(set(a).intersection(set(b)))
这会给你:
[2, 3, 6, 7, 8, 9]
这是有效的,因为set项目是无序的、不可更改的,并且不允许重复值。将其与intersection方法相结合,您将得到结果。