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