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

6

我经常想要测试两个集合的交集,而不使用交集的结果。

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")
2个回答

7

你正在寻找set.isdisjoint(),因为如果集合的交集为空,则称其为不相交

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

0
你可以使用 set.isdisjoint() 来测试两个集合是否有空交集,如果需要相反的结果,只需取反即可:
set1 = set([1,2])
set2 = set([2,3])

if not set1.sidisjoint(set2):
  print("Non-empty intersection")
else:
  print("Empty intersection")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接