【问题标题】:How to find whether a number belongs to a particular range in Python? [duplicate]如何在 Python 中查找数字是否属于特定范围? [复制]
【发布时间】:2009-03-06 08:49:08
【问题描述】:

假设我想检查 x 是否属于 0 到 0.5 的范围。我该怎么做?

我可以使用range 函数吗?

【问题讨论】:

    标签: python range


    【解决方案1】:

    我会使用 numpy 库,它也允许您对数字列表执行此操作:

    from numpy import array
    a = array([1, 2, 3, 4, 5, 6,])
    a[a < 2]
    

    【讨论】:

    • 对于范围(0.0 到 5.0)执行:a[numpy.logical_and(0.0
    • 这比评分最高的答案更慢更复杂。
    【解决方案2】:

    要检查某个数字 n 是否在由两个数字 a 和 b 表示的包含范围内,您可以这样做

    if   a <= n <= b:
        print "yes"
    else:
        print "no"
    

    使用&gt;&lt; 替换&gt;=&lt;= 来检查n 是否在ab 表示的独占范围内(即ab本身不是范围的成员)。

    Range 将生成由两个(或三个)转换为整数的参数定义的算术级数。请参阅documentation。我猜这不是你想要的。

    【讨论】:

    • 你的替代版本是完全错误的
    • 概念错误,不是拼写错误
    • 嗯,它适用于整数。对于浮点数,它可以工作,具体取决于 b 和 n 的值。
    • 它不适用于整数。考虑 a = b = n = 1。
    【解决方案3】:

    不,你不能那样做。 range() 需要整数参数。如果您想知道x 是否在此范围内,请尝试以下某种形式:

    print 0.0 <= x <= 0.5
    

    小心你的上限。如果您使用range(),则将其排除在外(range(0, 5) 不包括 5!)

    【讨论】:

    • -1:没有参考文档,也没有关于 range 真正作用的示例。 +1:面对荒谬的问题要礼貌。
    • “Range”也是一个英文单词,不仅仅是一个函数名;)
    【解决方案4】:
    >>> s = 1.1
    >>> 0<= s <=0.2
    False
    >>> 0<= s <=1.2
    True
    

    【讨论】:

      【解决方案5】:
      if num in range(min, max):
        """do stuff..."""
      else:
        """do other stuff..."""
      

      【讨论】:

      • 这不适用于 OP 的 floats 示例。请参阅@vartec 的回答。
      • 很可能,这是一个非常缓慢的实现。
      • 实际上,它看起来在 CPython 中以 min &lt;= num &lt; max 的形式高效实现(对 stride != 1 进行了特殊检查)。您可以在range_containsrange_contains_long 中查看cpython/Objects/rangeobject.c 中的实现
      【解决方案6】:
      print 'yes' if 0 < x < 0.5 else 'no'
      

      range() 用于生成连续整数数组

      【讨论】:

      • 谢谢..我得到了 range() 的概念有没有内置的方法?
      • 写入0
      • 怎么写 0
      • 我想知道有没有什么方法
      • 使用内置方法:(0.0).__lt__(x).__and__((5.0).__gt__(x))
      【解决方案7】:

      老忠实:

      if n >= a and n <= b:
      

      而且它看起来不像 Perl(笑话)

      【讨论】:

      • 这不是 Pythonic。
      猜你喜欢
      • 2021-04-01
      • 2021-11-05
      • 2021-10-05
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2018-05-12
      相关资源
      最近更新 更多