Python 检查列表与列表理解重叠

Python 检查列表与列表理解重叠,python,list-comprehension,overlap,Python,List Comprehension,Overlap,我有一个python脚本,它生成两个大小不同的随机列表,并返回第三个列表,该列表仅包含两个列表之间的公共元素(,没有重复项) 示例: 我的结果列表是 但它应该是 以下是我所做的: 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项是无序的、

我有一个python脚本,它生成两个大小不同的随机列表,并返回第三个列表,该列表仅包含两个列表之间的公共元素(,没有重复项)

示例:

我的结果列表是

但它应该是

以下是我所做的:

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
项是无序的、不可更改的,并且不允许重复值。将其与方法相结合,您将得到结果。

使用,而不是:

从:

集合是没有重复元素的无序集合。基本用途包括成员资格测试和消除重复条目。集合对象还支持并、交、差和对称差等数学运算

a=[3,8,9,6,5,3,7,8,2,10]
b=[7,13,20,12,2,6,1,2,8,19,3,15,16,14,22,22,4,9,15,8,13]
c=[]
对于i最大值(a,b):
如果i在min(a,b)中,而i不在c中:
c、 附加(i)
印刷品(c)

在编写
c=[i为i为max(a,b),如果i为min(a,b),而我不为c]
时要小心:在计算正确的表达式时,c未定义,不应在正确的部分使用。我以前已经初始化过它,无需
设置(b)
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]
c = list(set(a) & set(b))
print(c)
# [2, 3, 6, 7, 8, 9]