[Python-ideas] Consider adding clip or clamp function to math
victor.stinner at gmail.com
Sun Jul 31 15:38:44 EDT 2016
I dislike this API. What's the point of calling clamp(x)? clamp(b, a) is
min(a, b) and clamp(a, max_val=b) is just max(a, b). My point is that all
parameters must be mandatory.
Le 31 juil. 2016 6:41 AM, "David Mertz" <mertz at gnosis.cx> a écrit :
> Is there some special subtlety or edge case where a hand rolled function
> will go wrong? I like the SO version spelled like this (a little fleshed
> def clamp(val, min_val=None, max_val=None):
> min_val = val if min_val is None else min_val
> max_val = val if max_val is None else max_val
> assert min_val <= max_val
> return max(min(val , max_val), min_val)
> On Sat, Jul 30, 2016 at 2:57 PM, Neil Girdhar <mistersheik at gmail.com>
>> 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 couple ternary operators (e.g.
>> https://github.com/scipy/scipy/pull/5944/files line 98, which generated
>> a lot of discussion)
>> * 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
>> def clip(number, lower, upper):
>> return lower if number < lower else upper if number > upper else
>> 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.
>> Python-ideas mailing list
>> Python-ideas at python.org
>> Code of Conduct: http://python.org/psf/codeofconduct/
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons. Intellectual property is
> to the 21st century what the slave trade was to the 16th.
> Python-ideas mailing list
> Python-ideas at python.org
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas