起初,很抱歉,如果这是一个非常愚蠢的问题,但是我是个流血的python初学者,还没有找到解决方法
我给出了一个列表,并且必须从该列表的每个元素中减去某个值
我当前的方法如下:
positions = [10, 45, 66, 110]
subtraction_value = 8
for x in range(len(positions)):
delta_distance = int(positions[x])-subtraction_value
我了解我无法从列表中减去一个值 但我想不出一种方法来为每次迭代更新位置
希望问题是可以理解的,不幸的是英语不是我的主要语言。
答案 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