我正在尝试将包含负值的列表转换为非负值列表;颠倒负面的。我试过了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]
答案 0 :(得分:8)
尝试列表理解:
x2 = [abs(k) for k in x]
答案 1 :(得分: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))
希望这有帮助!
答案 2 :(得分:4)
简单的pythonic方式是上面的列表理解,但如果你正在使用Numpy做任何其他事情:
x2 = numpy.abs(x)
无需转换或进行任何循环。
答案 3 :(得分:1)
你想要的是使用绝对值(| x | = x,如果x> 0,| x | = -x,如果x <0)
for index in range(len(x)):
x[index] = x[index] if x[index] > 0 else -x[index]
答案 4 :(得分: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]