【问题标题】:Subtracting a value from different elements of a list [duplicate]从列表的不同元素中减去一个值[重复]
【发布时间】:2020-03-19 20:14:24
【问题描述】:

首先,如果这是一个非常愚蠢的问题,很抱歉,但我是一个该死的 python 初学者,还没有找到解决方案

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

我目前的做法如下:

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

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

我知道我不能从列表中减去一个值 但我想不出一种方法来更新每次迭代的位置

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

【问题讨论】:

  • 你能给出更完整的代码和声明的变量吗?
  • @genericguuse,你想从列表的每个元素中减去一个值而不迭代列表吗?

标签: python list integer


【解决方案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]

【讨论】:

  • 感谢您的快速响应,现在它可以工作了,但假设我的位置元素通过
【解决方案2】:

虽然其他答案是正确的,但也可以选择使用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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多