我经常发现自己想要测试两个集合的交集而不使用交集的结果。
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/