我正在尝试将包含负值的列表转换为非负值列表;反转负数。我试过abs
了,但没有用。
我的输入是
x = [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
当我尝试计算面积时,如何将其转换为这种格式
x = [10,9,8,7,6,5,4,3,2,1,0,1,2,3,4,5,6,7,8,9,10]
我正在尝试将包含负值的列表转换为非负值列表;反转负数。我试过abs
了,但没有用。
我的输入是
x = [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
当我尝试计算面积时,如何将其转换为这种格式
x = [10,9,8,7,6,5,4,3,2,1,0,1,2,3,4,5,6,7,8,9,10]
尝试列表理解:
x2 = [abs(k) for k in x]
您的尝试没有成功,因为abs()
需要一个整数,而不是一个列表。为此,您必须遍历列表:
x = [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
for i in range(len(x)):
x[i] = abs(x[i])
或者您可以使用更短的列表推导:
x = [abs(i) for i in x]
map
或者干脆使用更短的内置函数:)
x = list(map(abs, x))
希望这可以帮助!
简单的 pythonic 方式是上面的列表理解,但是如果您将 Numpy 用于其他任何您可以做的事情:
x2 = numpy.abs(x)
无需转换或进行任何循环。
你想要的是使用绝对值 (|x| = x if x > 0, |x| = -x if x < 0)
for index in range(len(x)):
x[index] = x[index] if x[index] > 0 else -x[index]
这是对您问题的错误答案,但这就是我来这里寻找的。这是如何使用operator.neg反转列表中的所有数字;即也积极消极。
import operator
x = [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
x = list(map(operator.neg, x))
它返回:
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
或者你当然可以做一个列表理解:
x = [-xi for xi in x]