Pee*_*tWc 4 python return max min
如果它在最小值和最大值之间,我不会得到一个值.如果该值小于min,我想得到最小值,如果它大于max,我想得到最大值.我现在使用这个代码,但是有一种内置或更智能的方法吗?
def inBetween(minv, val, maxv):
if minv < val < maxv: return val
if minv > val: return minv
if maxv < val: return maxv
print inBetween(2,5,10)
Run Code Online (Sandbox Code Playgroud)
>>> def inbetween(minv, val, maxv):
... return min(maxv, max(minv, val))
...
>>> inbetween(2, 5, 10)
5
>>> inbetween(2, 1, 10)
2
>>> inbetween(2, 11, 10)
10
Run Code Online (Sandbox Code Playgroud)
小智 6
记录在案:这种函数通常被称为clamp
(如钳制),有时是clip
。您通常为此找到的签名是clamp(val, minv, maxv)
. 如果您不喜欢使用函数的惯用解决方案min
并且max
由于函数开销,您可以使用此解决方案:
def clamp(val, minv, maxv):
return minv if val < minv else maxv if val > maxv else val
Run Code Online (Sandbox Code Playgroud)
快速的性能检查:
>>> import timeit
>>> timeit.timeit("clamp(1, 5, 10)", "def clamp(val, minv, maxv): return min(maxv, max(minv, val))")
1.8955198710000332
>>> timeit.timeit("clamp(1, 5, 10)", "def clamp(val, minv, maxv): return minv if val < minv else maxv if val > maxv else val")
0.5956520039999305
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2585 次 |
最近记录: |