Python: 如何判断一个集合是否完全包含另一个集合?
有没有什么快速的方法可以检查一个集合是否完全包含另一个集合呢?
就像这样:
>>> set([1, 2, 3]).containsAll([2, 1])
True
>>> set([1, 2, 3]).containsAll([3, 5, 9])
False
7 个回答
9
你可以使用 set.issubset()
或者 set.issuperset()
这两个方法,或者用它们对应的运算符:<=
和 >=
。需要注意的是,这些方法可以接受任何可迭代的对象作为参数,不仅仅是集合:
>>> {1, 2}.issubset([1, 2, 3])
True
>>> {1, 2, 3}.issuperset([1, 2])
True
不过,如果你使用运算符的话,两个参数都必须是集合:
>>> {1, 2} <= {1, 2, 3}
True
>>> {1, 2, 3} >= {1, 2}
True
44
为了完整性说明:这和 issubset
是一样的(虽然可以说它的表达方式稍微不那么明确/易读):
>>> set([2,1]).issubset(set([1,2,3]))
True
>>> set([2,1]) <= set([1,2,3])
True
>>> set([3,5,9]).issubset(set([1,2,3]))
False
>>> set([3,5,9]) <= set([1,2,3])
False
169
这些是列表,但如果你真的想要的是集合,可以使用 issubset
这个方法。
>>> s = set([1,2,3])
>>> t = set([1,2])
>>> t.issubset(s)
True
>>> s.issuperset(t)
True
对于列表来说,你只能逐个检查每个元素,别无他法。