Python:测试空集交集而不创建新集

kru*_*kin 4 python intersection set

我经常发现自己想测试两个集合的交集而不使用交集的结果。

set1 = set([1,2])
set2 = set([2,3])
if(set1 & set2):
  print("Non-empty intersection")
else:
  print("Empty intersection")
Run Code Online (Sandbox Code Playgroud)

问题是创建了一个新的集合来执行此测试,这可能效率很低。

是否有一个简短的方法无需明确写出即可(如下所示)?

if(any(x in set2 for x in set1)):
  print("Non-empty intersection")
else:
  print("Empty intersection")
Run Code Online (Sandbox Code Playgroud)

mir*_*ulo 5

您正在寻找set.isdisjoint(),因为当且仅当集合具有空交集时,集合才是相交的。

>>> set1 = set([1,2])
>>> set2 = set([2,3])
>>> set1.isdisjoint(set2)
False
Run Code Online (Sandbox Code Playgroud)