我想将数字限制在一定范围内.目前,我正在做以下事情:
minN = 1
maxN = 10
n = something() #some return value from a function
n = max(minN, n)
n = min(maxN, n)
Run Code Online (Sandbox Code Playgroud)
这使得它中minN
和maxN
,但它并没有看起来非常漂亮.我怎么能做得更好?
PS:仅供参考,我使用的是Python 2.6.
Adr*_*son 56
def clamp(n, minn, maxn):
return max(min(maxn, n), minn)
Run Code Online (Sandbox Code Playgroud)
或功能相当:
clamp = lambda n, minn, maxn: max(min(maxn, n), minn)
Run Code Online (Sandbox Code Playgroud)
现在,您使用:
n = clamp(n, 7, 42)
Run Code Online (Sandbox Code Playgroud)
或者说得非常清楚:
n = minn if n < minn else maxn if n > maxn else n
Run Code Online (Sandbox Code Playgroud)
更清楚:
def clamp(n, minn, maxn):
if n < minn:
return minn
elif n > maxn:
return maxn
else:
return n
Run Code Online (Sandbox Code Playgroud)
Bjö*_*örn 45
只需使用numpy.clip()
(doc):
n = np.clip(n, minN, maxN)
Run Code Online (Sandbox Code Playgroud)
它也适用于整个数组:
my_array = np.clip(my_array, minN, maxN)
Run Code Online (Sandbox Code Playgroud)
Ste*_*ard 42
如果你想变得可爱,你可以这样做:
n = sorted([minN, n, maxN])[1]
Run Code Online (Sandbox Code Playgroud)