python范围出现在其他范围内

时间:2010-07-13 11:24:13

标签: python

我该怎么做:

>>> xrange(4, 10) in xrange(3, 20)
TRUE

4 个答案:

答案 0 :(得分:5)

(min1 >= min2) and (max1 <= max2)怎么样?

(假设min1, max1 = 4, 10min2, 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运算符要快得多。