python中的Set操作
我有两个对象列表,例如python中的Set操作,python,list,Python,List,我有两个对象列表,例如 L1 = [2,3,4] L2 = [1,2] 我想要两个不同的列表 1) 匹配项 2) 不匹配项 我可以得到匹配的元素#1,如下所示 match = [x for x in L1 if x in L2] 但是如何才能有效地获取不匹配的元素呢 我可以在中使用not,但是否有其他方法可以做到这一点 谢谢,您可以使用各种set方法,如、、 您可以使用match获得它: no_match = [x for x in L1 + L2 if x not in match] 有
L1 = [2,3,4]
L2 = [1,2]
我想要两个不同的列表
1) 匹配项
2) 不匹配项
我可以得到匹配的元素#1,如下所示
match = [x for x in L1 if x in L2]
但是如何才能有效地获取不匹配的元素呢
我可以在中使用not,但是否有其他方法可以做到这一点
谢谢,您可以使用各种
set
方法,如、、
您可以使用
match
获得它:
no_match = [x for x in L1 + L2 if x not in match]
有一种可能性:
not_match=[x for x in L1 if x not in L2] + [x for x in L2 if x not in L1]
>>> L1 = [2,3,4]
>>> L2 = [1,2]
>>> [i for i in L1 if i not in L2]
[3, 4]
>>> [i for i in L1 if i in L2]
[2]
>>> [i for x in L2 if i not in L1]
[1]
>>> [i for i in L1 if i not in L2] + [i for i in L2 if i not in L1]
[3, 4, 1]
我认为你们可以利用它,它基本上有无序的不同元素。我还鼓励您尝试使用速记法来执行操作
联合
,交叉
,以及差异
>>> s1 = set(L1)
>>> s2 = set(L2)
>>> s1 | s2 # union
{1, 2, 3, 4}
>>> s1 & s2 # intersection
{2}
>>> s1 - s2 # difference
{3, 4}
>>> s1 ^ s2 # symmetric difference
{1, 3, 4}
从数学角度复习集合运算
假设A
和B
是集合
- A和B的并集是
A的集合∪B={x:x∈ A或x∈ B}
- A和B的交点是
A的集合∩B={x:x∈ A和x∈ B}
- A和B的差异是集合
A-B={x:x∈ A和x∉ B}
- A和B的对称差是集合
A∆B=A∪B-A∩B
>>> s1 = set(L1)
>>> s2 = set(L2)
>>> s1 | s2 # union
{1, 2, 3, 4}
>>> s1 & s2 # intersection
{2}
>>> s1 - s2 # difference
{3, 4}
>>> s1 ^ s2 # symmetric difference
{1, 3, 4}