【问题标题】:How can I subtract an index from a list? [duplicate]如何从列表中减去索引? [复制]
【发布时间】:2020-08-03 18:18:45
【问题描述】:

我有一个非常大的列表,大概有 300 万个元素,比如说

x = [1, 2, 3, 4, 5, 6, ..., 3000000]

我尝试从中减去一个数字,例如 8(输入完全像这样:x - 8),幸运的是它给了我另一个相同数量的元素列表,但从中减去了 8 喜欢

[-7, -6, -5, -4, -3, -2, ..., 2999992]

但我还有另一个清单,比如说

otherlist = [1, 2, 3, 4, 5, 6, 7, 8]

otherlist[7] = 8 在哪里,当我尝试执行相同的减法 (x - otherlist[7]) 时,它吓坏了我,不能只给我和以前一样的输出。

我该如何解决这个问题?我已经尝试创建一个单独的列表,只是

分离列表 = [0, 1, 2, ..., 2999999]

例如 所以我可以用它作为索引来迭代我原来的 x 列表

x[m] - otherlist[7] for m in separatelist

但这也有同样的不处理问题。

【问题讨论】:

  • 你在使用 numpy 吗?通常,从列表中减去数字不是受支持的操作。如果列表是一个 numpy 数组,它可能会起作用
  • x - 8 不是对此处显示的x 的有效操作。请注意,您不需要索引列表来遍历列表 - 您可以执行 for element in list 或者,如果您需要索引,例如修改,for index, element in enumerate(list).

标签: python list indexing indices operation


【解决方案1】:

您可以使用 numpy 减去元素。使用 numpy 更快。

In [107]: import numpy as np
In [108]: lst = np.array(range(3000000))

In [109]: otherlist = np.array([1, 2, 3, 4, 5, 6, 7, 8])

In [110]: lst - otherlist[-1]
Out[110]: array([     -8,      -7,      -6, ..., 2999989, 2999990, 2999991])

只使用列表会很慢

In [115]: otherlist = [1, 2, 3, 4, 5, 6, 7, 8]

In [116]: lst = list(range(3000000))

In [117]: [x - otherlist[-1] for x in lst]

【讨论】:

    【解决方案2】:

    如果您的意思是从列表中删除数字 8,那么您可以使用删除功能

    x.remove(8)
    

    或者如果你想将所有数字减去 8 则:

    x = [1, 2, 3, 4, 3000000]
    
    y = []
    
    for num in x:
        subtracted = num - 8
        y.append(subtracted)
    
    print(y)
     
    

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多