【问题标题】:Find if a value is close to another value查找一个值是否接近另一个值
【发布时间】:2018-08-11 23:15:39
【问题描述】:

这在 python 中应该相当简单,我似乎无法在 google 中将正确的搜索放在一起。但是假设我有两个 int 值,ab,范围为 1 - 10 和 a=6。我想知道 b 是 7 还是 8(在 1 +/- 值 6 内)。我怎样才能在 python 中有效地做到这一点?

【问题讨论】:

  • a-1 < b < a+1 ?
  • @OmarEinea 我相信OP说的是整数,a-1a+1之间的唯一整数是a,在这种情况下a==b,也许你的意思是a-1 <= b <= a+1
  • 不应该是5还是7?

标签: python python-3.x


【解决方案1】:

你可以使用in操作符:

>>> b in (7, 8)
True

【讨论】:

    【解决方案2】:

    Omar Einea 对您的问题的评论有一个有效的答案。你可以把它包装成一个 lambda 函数:

    def test_within(a,b): return a-1 <= b <= a+1
    
    a = 6
    b = 7 
    
    test_within(a, b) # True
    

    如果您只关心整数,可以使用in 运算符,类似于what @zulu have pointed

    def test_within(a,b): return b in [a-1, a+1] # or [a-1, a, a+1] to catch a==b
    
    
    a = 6
    b = 7 
    
    test_within(a, b) # True
    

    在 IPython 上使用 %timeit 魔法进行测试时,第一个解决方案要快一些(232 ns 对比 285 ns)。

    【讨论】:

    【解决方案3】:

    你可以这样尝试:

    a=6
    b=7
    res = [x  for x in range(10) if abs(x-a)==1]
    print(b in res)
    

    【讨论】:

    • 他说“高效”
    • 使用abs做得很好!
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多