如何从列表中减去索引?
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)
我有一个非常大的列表,大约有 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)