如何在不知道哪个更大的情况下找到两个值之间的差异?

Rap*_*pid 38 python numbers function distance

我想知道是否有一个内置于Python中的函数可以确定两个有理数之间的距离,但我没有告诉它哪个数字更大.例如

>>>distance(6,3)
3
>>>distance(3,6)
3
Run Code Online (Sandbox Code Playgroud)

显然我可以写一个简单的定义来计算哪个更大然后只做一个简单的减法:

def distance(x, y):
    if x >= y:
        result = x - y
    else:
        result = y - x
    return result
Run Code Online (Sandbox Code Playgroud)

但我宁愿不必调用这样的自定义函数.根据我有限的经验,我经常发现Python有一个内置函数或一个模块,它可以完全按照您的需要执行,并且比代码更快.希望有人能告诉我有一个内置功能可以做到这一点.

NPE*_*NPE 79

abs(x-y) 将完全满足您的需求:

In [1]: abs(1-2)
Out[1]: 1

In [2]: abs(2-1)
Out[2]: 1
Run Code Online (Sandbox Code Playgroud)

  • 但是,在动态传递数字时,您会遇到符号问题。下面分享了一个可行的解决方案。请检查 (2认同)

Acu*_*nus 11

如果您对不同的答案感到好奇,以下单行也可以使用:

  • max(x - y, y - x)

  • max(x, y) - min(x, y)

  • (x - y) * math.copysign(1, x - y)

(d := x - y) * math.copysign(1, d)肯定使用是首选.

  • 解释为什么人们会选择一种解决方案而不是另一种解决方案可能会很有用。从局外人的角度来看,我想知道“谁在乎呢?” 如果最短解,“abs(x - y)”是正确的。 (2认同)

Chr*_*ald 6

只需使用abs(x - y). 这会将两者之间的净差返回为正值,而不管哪个值更大。


G M*_*G M 6

如果有数组,也可以使用numpy.diff

import numpy as np
a = [1,5,6,8]
np.diff(a)
Out: array([4, 1, 2])
Run Code Online (Sandbox Code Playgroud)