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

2024-04-08

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

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() https://docs.python.org/3.4/library/stdtypes.html?highlight=sets#set.isdisjoint,因为集合是disjoint https://en.wikipedia.org/wiki/Disjoint_sets当且仅当它们有一个空的交集。

>>> set1 = set([1,2])
>>> set2 = set([2,3])
>>> set1.isdisjoint(set2)
False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:测试空集交集而不创建新集 的相关文章

随机推荐