如何限制数字在指定范围内?(Python)
我想把一个数字限制在某个范围内。目前,我是这样做的:
minN = 1
maxN = 10
n = something() #some return value from a function
n = max(minN, n)
n = min(maxN, n)
这样可以把数字限制在 minN
和 maxN
之间,但看起来不是很好。有没有更好的方法?
顺便说一下,我使用的是 Python 2.6。
5 个回答
57
如果你想让你的代码看起来更可爱,可以这样做:
n = sorted([minN, n, maxN])[1]
83
简单来说,可以使用 numpy.clip()
这个函数(详细信息可以查看文档):
n = np.clip(n, minN, maxN)
这个函数也可以用在整个数组上:
my_array = np.clip(my_array, minN, maxN)
126
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