4

我正在尝试将包含负值的列表转换为非负值列表;反转负数。我试过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]
4

5 回答 5

9

尝试列表理解:

x2 = [abs(k) for k in x]
于 2013-11-01T03:45:26.243 回答
5

您的尝试没有成功,因为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))

希望这可以帮助!

于 2013-11-01T03:48:16.680 回答
4

简单的 pythonic 方式是上面的列表理解,但是如果您将 Numpy 用于其他任何您可以做的事情:

x2 = numpy.abs(x)

无需转换或进行任何循环。

于 2013-11-01T03:49:02.367 回答
1

你想要的是使用绝对值 (|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]
于 2013-11-01T03:50:10.543 回答
1

这是对您问题的错误答案,但这就是我来这里寻找的。这是如何使用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]
于 2017-06-27T19:10:34.063 回答