在我的一个项目中,我必须实现一个基于数字符号加1或减1的函数。像这样的东西,
def func(num):
if num > 0:
return num + 1
if num < 0:
return num - 1
但这似乎是对这种简单行为的不必要的长实现。有没有更简单的方法来实现这一目标。也许是单行?
答案 0 :(得分:4)
return num + math.copysign(1, num)
答案 1 :(得分:3)
您可以在此处使用数学模块:
>>> from math import copysign
>>> a = -1
>>> a += copysign(1,a)
>>> a
-2.0
>>> a = 3
>>> a += copysign(1,a)
>>> a
4.0
Numpy还提供了一个签名功能
import numpy as np
a = 5
a += np.sign(a)
6
答案 2 :(得分:1)
可以使用lambda编写一行函数。
a = lambda x: x+1 if x < 0 else x-1
通过这样做来调用它:
print(a(5)) # This would return 4 as the value.
答案 3 :(得分:0)
def func(num):
if (num == 1):
return 2
elif (num == -1):
return -2
elif (num > 1):
return 1 + func(num-1)
else:
return -1 + func(num+1)
如果检查0是否是要检查的输入,则可以添加额外的内容。