如何从列表中减去索引?

How can I subtract an index from a list?

我有一个非常大的列表,大约有 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]) 它吓坏了我并且不能只给我与以前相同的输出。

我该如何解决这个问题?我试过创建一个单独的列表

separatelist = [0, 1, 2, ..., 2999999]

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

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

但同样存在无法处理的问题。

您可以使用 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]

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

x.remove(8)

或者如果您想将所有数字都减去 8,则:

x = [1, 2, 3, 4, 3000000]

y = []

for num in x:
    subtracted = num - 8
    y.append(subtracted)

print(y)