Python 除非为负数,否则进行减法运算,然后返回0

Python 除非为负数,否则进行减法运算,然后返回0,python,math,Python,Math,首先,我要说的是,这仅仅是为了满足我的好奇心,而不是在编码项目上需要帮助。但我想知道是否有人知道一个函数(特别是在python中,但我接受一个有效的数学概念)有点像绝对值,给定一个数字,如果是负数将返回0,如果是正数将返回该数字 伪代码: def myFunc(x): if x > 0: return x else: return 0 再说一遍,不是出于复杂性而问这个问题,只是出于好奇。现在我已经需要它好几次了,我想知道我是否真的需要编写自

首先,我要说的是,这仅仅是为了满足我的好奇心,而不是在编码项目上需要帮助。但我想知道是否有人知道一个函数(特别是在python中,但我接受一个有效的数学概念)有点像绝对值,给定一个数字,如果是负数将返回0,如果是正数将返回该数字

伪代码:

def myFunc(x):
    if x > 0:
        return x
    else:
        return 0
再说一遍,不是出于复杂性而问这个问题,只是出于好奇。现在我已经需要它好几次了,我想知道我是否真的需要编写自己的函数,或者是否已经存在一个函数。如果没有函数可以这样做,那么有没有一种方法可以使用一个不计算两次的表达式将其写在一行中

i、 e

如果x-y不被计算两次,我会接受这样的解决方案。如果有人有什么解决办法,我会很感激的

谢谢

这应该可以做到:

max(x-y, 0)
单程

>>> max(0, x)

听起来像是一个分析型的问题。numpy可以来营救

如果您的数据位于阵列中:

x = np.arange(-5,11)
print x
[-5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10]

# Now do your subtraction and replacement.  
x[(x-y)>0] -= y
x[(x-y)<0]  = 0
x=np.arange(-5,11)
打印x
[-5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10]
#现在做减法和替换。
x[(x-y)>0]=y

x[(x-y)另一个表达式是

x -= min(x, y)

我想你要找的是
max(0,x)
?Sry@Junuxx…我想你刚刚在评论中击败了我。感觉我偷了你的分数:)@Rob:我觉得这太琐碎了,不能作为答案发布。但别担心,享受你的分数:)
x -= min(x, y)