It's common to want to clip (or clamp) a number to a range. This feature is commonly needed for both floating point numbers and integers:
There are a few approaches:
* use a min/max construction,
* call sorted on a list of the three numbers and pick out the first, or
* use numpy.clip.
Am I right that there is no *obvious* way to do this? If so, I suggest adding math.clip (or math.clamp) to the standard library that has the meaning:
def clip(number, lower, upper):
return lower if number < lower else upper if number > upper else number
This would work for non-numeric types so long as the non-numeric types support comparison. It might also be worth adding
assert lower < upper
to catch some bugs.
Best,
Neil