我知道abs()
可以将数字转换为正数,但是否有相反的函数?
我有一个充满数字的数组,我需要将它们转换为负数:
array1 = []
arrayLength = 25
for i in arrayLength:
array1.append(random.randint(0, arrayLength)
我想也许我可以在数字被加入数组的时候对它们进行转换,而不是等到数组完成后再进行转换。有人知道实现这个的代码吗?
提前感谢。
我知道abs()
可以将数字转换为正数,但是否有相反的函数?
我有一个充满数字的数组,我需要将它们转换为负数:
array1 = []
arrayLength = 25
for i in arrayLength:
array1.append(random.randint(0, arrayLength)
我想也许我可以在数字被加入数组的时候对它们进行转换,而不是等到数组完成后再进行转换。有人知道实现这个的代码吗?
提前感谢。
如果你想将一个数字强制变为负数,不管它最初是正还是负,你可以使用:
-abs(n)
请注意,整数0
将保持为0
。
-abs(n)
是Tom Karzes早期提供的一个非常好的答案,因为它可以处理你是否知道数字是负数的情况。
如果你知道这个数字是正数,那么你可以通过取变量的负值来避免函数调用的开销:
-n
这可能并不重要,但是如果这段代码位于像游戏循环这样的热循环中,则函数调用的开销将会累加。
>>> timeit.timeit("x = -abs(y)", setup="y = 42", number=5000)
0.0005687898956239223
>>> timeit.timeit("x = -y", setup="y = 42", number=5000)
0.0002599889412522316
我认为最好的方法是将每个数字乘以-1:
def negativeNumber(x):
neg = x * (-1)
return neg
-
。arrayLength = 25
array1 = [-random.randint(0, arrayLength) for _ in arrayLength]
这也会很好
import random
array1 = []
arrayLength = 25
for i in range(arrayLength):
array1.append((random.randint(0, arrayLength)*-1))