How to limit a number to be within a specified range? (Python) How to limit a number to be within a specified range? (Python) python python

How to limit a number to be within a specified range? (Python)


def clamp(n, minn, maxn):    return max(min(maxn, n), minn)

or functionally equivalent:

clamp = lambda n, minn, maxn: max(min(maxn, n), minn)

now, you use:

n = clamp(n, 7, 42)

or make it perfectly clear:

n = minn if n < minn else maxn if n > maxn else n

even clearer:

def clamp(n, minn, maxn):    if n < minn:        return minn    elif n > maxn:        return maxn    else:        return n


Simply use numpy.clip() (doc):

n = np.clip(n, minN, maxN)

It also works for whole arrays:

my_array = np.clip(my_array, minN, maxN)


If you want to be cute, you can do:

n = sorted([minN, n, maxN])[1]