Python中有没有办法在一行中给出列表中每个数字元素的相反数,而不需要这样做,例如:
for i in range(len(L)):
L[i] = -L[i]
考虑以下列表:
[0, 1, 2, 3..., 9]
输出应该是
[0, -1, -2, -3..., -9]
列表中的每个数字都应该是其相反的加法。
-L
显然行不通。
我进行了搜索,但我只找到了如何反转列表,而不是如何反转其元素(意味着每个数字都应该成为其加法逆元)。
我知道列表推导式,但我想知道Python中是否有一个特殊的关键字来实现这一点,或者以更干净的方式做到这一点。
一种方法是使用具有您想要的属性的 numpy 数组:
import numpy as np
list_ = np.array(range(10))
list_inv = - list_
这给出了
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
如果您的输入值是数字,您可以这样做
negated_values=map(lambda x:-x, mylist)
哪里
print(list(negated_values))
退货
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
list_ = range(10)
list_ = [-x for x in list_]
或
list_ = range(10)
list_ = list(map(lambda x: -x, list_))
或
list_ = range(0,-10,-1)
如果你想反转列表而不像其他人建议的那样使用列表理解或映射(即最简单的单个命令),你可以使用 Numpy 来完成,但你必须首先转换为 Numpy 数组(这显然是增加了其自身的复杂性)。然后你可以对数组取反,例如
import numpy as np
x = [1, -2, 3]
arr = np.array(x)
arr
Output: array([ 1, -2, 3])
-arr
Output: array([-1, 2, -3])