Python:在不创建新集的情况下测试空集交集

标签 python set intersection

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

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

关于Python:在不创建新集的情况下测试空集交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568341/

相关文章:

set - 集合 {x,x} 是 {x} 的子集吗?

javascript - 如何在集合中查找数组的存在?

java - Guava ImmutableSet : Builder vs. 的?

java - 如何检查直线和矩形之间的交点?

algorithm - 如何检测线段与圆柱相交?

多组交集的算法模型

python - 直到语句/循环 python?

python - 如何使用 2D Numpy 数组放置 pop/append?

python - 使用子进程在 Python 中执行命令行?

python - Django 测试 : Using a login decorator for test cases