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

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

问题是创建了一个新的集来执行此测试,这可能会导致效率低下。
如果不明确地写出来(如下所示),有没有捷径可以做到这一点?
if(any(x in set2 for x in set1)):
  print("Non-empty intersection")
else:
  print("Empty intersection")

最佳答案

您要查找的是set.isdisjoint(),因为集合是disjoint当且仅当它们有空交叉点时。

>>> set1 = set([1,2])
>>> set2 = set([2,3])
>>> set1.isdisjoint(set2)
False

10-01 21:47