首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将数字限制在指定范围内?(Python)

如何将数字限制在指定范围内?(Python)
EN

Stack Overflow用户
提问于 2011-05-14 03:34:58
回答 4查看 114.4K关注 0票数 54

我希望将一个数字限制在一定的范围内。目前,我正在做以下工作:

代码语言:javascript
复制
minN = 1
maxN = 10
n = something() #some return value from a function
n = max(minN, n)
n = min(maxN, n)

这将它保留在minNmaxN中,但它看起来并不是很好。我怎样才能做得更好呢?

PS:仅供参考,我使用的是Python 2.6。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-14 03:41:14

代码语言:javascript
复制
def clamp(n, minn, maxn):
    return max(min(maxn, n), minn)

或者在功能上等效:

代码语言:javascript
复制
clamp = lambda n, minn, maxn: max(min(maxn, n), minn)

现在,您可以使用:

代码语言:javascript
复制
n = clamp(n, 7, 42)

或者说得非常清楚:

代码语言:javascript
复制
n = minn if n < minn else maxn if n > maxn else n

更清楚的是:

代码语言:javascript
复制
def clamp(n, minn, maxn):
    if n < minn:
        return minn
    elif n > maxn:
        return maxn
    else:
        return n
票数 85
EN

Stack Overflow用户

发布于 2014-07-15 18:32:07

只需使用numpy.clip() (doc):

代码语言:javascript
复制
n = np.clip(n, minN, maxN)

它也适用于整个数组:

代码语言:javascript
复制
my_array = np.clip(my_array, minN, maxN)
票数 66
EN

Stack Overflow用户

发布于 2011-05-14 03:40:39

如果你想变得可爱,你可以这样做:

代码语言:javascript
复制
n = sorted([minN, n, maxN])[1]
票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5996881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档