从列表的不同元素中减去一个值

时间:2019-11-24 10:09:37

标签: python list integer

起初,很抱歉,如果这是一个非常愚蠢的问题,但是我是个流血的python初学者,还没有找到解决方法

我给出了一个列表,并且必须从该列表的每个元素中减去某个值

我当前的方法如下:

positions = [10, 45, 66, 110]
subtraction_value = 8

for x in range(len(positions)):                                   
    delta_distance = int(positions[x])-subtraction_value

我了解我无法从列表中减去一个值 但我想不出一种方法来为每次迭代更新位置

希望问题是可以理解的,不幸的是英语不是我的主要语言。

2 个答案:

答案 0 :(得分:1)

您只需在循环主体中添加一行,即可使用新值更新实际列表:

positions = [10, 45, 66, 110]
subtraction_value = 8

for x in range(len(positions)):                                   
    delta_distance = int(positions[x])-subtraction_value
    positions[x] = delta_distance

您可以通过以下理解获得相同的结果:

positions = [x - subtraction_value for x in positions]

答案 1 :(得分:1)

虽然其他答案正确,但也可以选择使用map。当您的计算在处理方面“昂贵”,并且您只想将其延迟到需要时,这特别有用。

positions = map(lambda x: x - subtraction_value , positions)

请注意,这不会创建列表,map返回类似于生成器的内容,可以对其进行迭代(然后才进行计算)。要获取列表:

positions = list(map(lambda x: x - subtraction_value , positions))

没人提到的另一种选择是使用numpy

import numpy as np
positions = [10, 45, 66, 110]
positions = np.array(positions) - subtraction_value