在Python中夹紧浮动数字?

Joa*_*nge 24 python math clamp

在Python 2.6中是否有内置函数?

就像是:

clamp(myValue, min, max)
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 42

Numpy的clip功能会做到这一点.

>>> import numpy
>>> numpy.clip(10,0,3)
3
>>> numpy.clip(-4,0,3)
0
>>> numpy.clip(2,0,3)
2
Run Code Online (Sandbox Code Playgroud)

  • 但这似乎非常慢。我猜这是因为这个函数是用于数组的。 (2认同)

Sve*_*ach 31

没有这样的功能,但是

max(min(my_value, max_value), min_value)
Run Code Online (Sandbox Code Playgroud)

会做的.

  • 我总是喜欢这样排序:min(max(low, value), high)。并将其想象为低 < 值 < 高。然后它也读起来像一个“最小-最大”函数 minmax(low, value, high) (10认同)

Bil*_*ill 8

我认为这个问题得到了回答,但如果有人需要,这里有一个替代的 DIY 解决方案:

def clip(value, lower, upper):
    return lower if value < lower else upper if value > upper else value
Run Code Online (Sandbox Code Playgroud)

(比@Sven Marnach 的回答略快——即使在边界内)。