我希望将一个数字限制在一定的范围内。目前,我正在做以下工作:
minN = 1
maxN = 10
n = something() #some return value from a function
n = max(minN, n)
n = min(maxN, n)
这将它保留在minN
和maxN
中,但它看起来并不是很好。我怎样才能做得更好呢?
PS:仅供参考,我使用的是Python 2.6。
发布于 2011-05-14 03:41:14
def clamp(n, minn, maxn):
return max(min(maxn, n), minn)
或者在功能上等效:
clamp = lambda n, minn, maxn: max(min(maxn, n), minn)
现在,您可以使用:
n = clamp(n, 7, 42)
或者说得非常清楚:
n = minn if n < minn else maxn if n > maxn else n
更清楚的是:
def clamp(n, minn, maxn):
if n < minn:
return minn
elif n > maxn:
return maxn
else:
return n
发布于 2014-07-15 18:32:07
发布于 2011-05-14 03:40:39
如果你想变得可爱,你可以这样做:
n = sorted([minN, n, maxN])[1]
https://stackoverflow.com/questions/5996881
复制相似问题