如何检查set((2,range(2,3)))是否为set的子集((1,range(2,100)))

时间:2015-09-09 13:32:36

标签: python-3.x set range

如何检查包含范围的两个集合是否是彼此的子集?

set((2,range(2,3))).issubset(set((1,range(2,100))))
-->[False]

set((range(2,3))).issubset(set((range(2,100))))
-->[False]

但确实如此。

1 个答案:

答案 0 :(得分:1)

看看这个集合的样子:

>>> set((2, range(2, 5)))
{range(2, 5), 2}

如您所见,范围对象是集合的实际元素。例如,元素3不在该集合中,因为它只包含在集合中的范围内。

您要做的是通过迭代范围内的数字,然后添加更多数字来创建范围中的集合:

>>> a = set((2,)).union(set(range(2, 3)))
>>> b = set((1,)).union(set(range(2, 100)))
>>> a.issubset(b)
True

请注意,我将单个数字作为元组传递,而范围作为单个参数传递给set()