我该怎么做:
>>> xrange(4, 10) in xrange(3, 20)
TRUE
答案 0 :(得分:5)
(min1 >= min2) and (max1 <= max2)
怎么样?
(假设min1, max1 = 4, 10
和min2, max2 = 3, 20
)
注意:你想要比较没有实际制作/评估范围的端点,否则它将非常低效。
编辑:这也有效;不是更好,但更漂亮的imo:min2 <= min1 <= max1 <= max2
答案 1 :(得分:4)
如果您正在寻找包含在另一组中的一组,请尝试:
>>> set(xrange(4, 10)).issubset(set(range(3,20))
如果您希望比较端点,因为您总是使用范围,那么您可以比较@ zoli2k等端点。
[编辑]请求编辑。
答案 2 :(得分:0)
>>>min(xrange(4, 10)) > min(range(3, 20)) and max(xrange(4, 10)) < max(range(3, 20))
True
答案 3 :(得分:0)
给定两个范围,您可以这样做:
>>> a = range(10)
>>> b = range(5,15)
>>> c = range(15,25)
>>> any(x in a for x in b)
True
>>> any(x in a for x in c)
False
这效率稍低,如果要检查的范围非常大(100+个元素),那么a
的类型最好是“设置”而不是列表。即:
>>> a = set(range(10))
集合没有顺序,但in
运算符要快得多。