Python中set.issubset方法的异常行为疑问
问题解答
这既不是对Python文档的误解,也不是bug,问题出在你生成的第一个集合上:
range(2, 2)是空序列
Python里range(start, stop)生成的是从start开始、到stop(不包含)结束的整数序列。当start >= stop时,序列里没有任何元素,所以set(range(2, 2))其实是空集合set(),根本不包含元素2。- 空集是任何集合的子集
根据集合论的规则,空集里没有任何元素,自然满足“所有元素都属于另一个集合”的判定条件(没有需要验证的元素),因此空集调用issubset判断任何集合都会返回True。
如果要验证包含元素2的集合是否是目标集合的子集,应该写:
set(range(2, 3)).issubset(set(range(10, 95)))
此时返回结果为False,因为元素2不在range(10, 95)对应的集合中。
内容的提问来源于stack exchange,提问作者Alexander Nestorov
相关产品推荐
相关产品推荐

