除非为负,否则减去,然后返回0

2024-04-19 10:41:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

伪代码:

def myFunc(x):
    if x > 0:
        return x
    else:
        return 0

再说一遍,不是出于复杂的原因问这个问题,只是出于好奇。我已经有几次需要它了,我想知道我是否真的需要编写自己的函数,或者是否已经存在一个函数。如果没有函数来执行此操作,是否有一种方法可以使用一个表达式在一行中不计算两次。

myVar = x-y if x-y>0 else 0

如果x-y没有被评估两次,我就可以用这样的解决方案。所以如果有人有什么解决办法,我会很感激的。

谢谢


Tags: 项目函数代码概念编码returnifdef
3条回答

这应该做到:

max(x-y, 0)

单向。。。

>>> max(0, x)

听起来像是个分析型问题。努比可以来救我!

如果数据在数组中:

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中的值替换为0,否则替换为x-y

注意,上面的解决方案对于从数组中减去一个整数或在两个相同维度的数组上操作很有效。然而,丹尼尔的解决方案在处理两个长度相等的列表时更加优雅。这完全取决于你的需要(以及你是否想冒险进入纽比的世界)。

相关问题 更多 >