如何给出Python列表中每个数字的逆

问题描述 投票:0回答:4

Python中有没有办法在一行中给出列表中每个数字元素的相反数,而不需要这样做,例如:

for i in range(len(L)):
    L[i] = -L[i]

考虑以下列表:

[0,  1,  2,  3...,  9]

输出应该是

[0, -1, -2, -3..., -9]

列表中的每个数字都应该是其相反的加法。


-L
显然行不通。

我进行了搜索,但我只找到了如何反转列表,而不是如何反转其元素(意味着每个数字都应该成为其加法逆元)。


我知道列表推导式,但我想知道Python中是否有一个特殊的关键字来实现这一点,或者以更干净的方式做到这一点。

python list digital-signature
4个回答
3
投票

一种方法是使用具有您想要的属性的 numpy 数组:

import numpy as np

list_ = np.array(range(10))
list_inv = - list_

这给出了

[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

2
投票

如果您的输入值是数字,您可以这样做

negated_values=map(lambda x:-x, mylist)

哪里

print(list(negated_values))

退货

[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

2
投票
list_ = range(10)
list_ = [-x for x in list_]

list_ = range(10)
list_ = list(map(lambda x: -x, list_))

list_ = range(0,-10,-1)

2
投票

如果你想反转列表而不像其他人建议的那样使用列表理解或映射(即最简单的单个命令),你可以使用 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])
© www.soinside.com 2019 - 2024. All rights reserved.