我们如何在不使用循环的情况下在列表的多个索引处添加元素?

How can we add a element at multiple index of a list without using loops?

我创建了一个这样的列表:

n = [0,0,0,0,0]

现在我想在索引 [1,2,3] 处添加 [100]。 所以列表会变成这样 -

n = [0,100,100,100,0]

另一个例子:在索引[3,4]处添加[200],列表将变为-

n = [0,100,100,300,200]

我们可以使用循环来做到这一点,但是使用循环会花费 O(n) 的时间。 我想知道我们可以在不使用循环的情况下在列表的多个索引处添加一个值吗?

您可以使用 can numpy(以其高性能代码而闻名)数组,语法很简单

import numpy as np

n = np.zeros(5) # make array of float, use 'np.zeros(5).astype(int)' for int
n[1:4] = 100
n[3:5] += 200

如果你在每一步之间打印

[  0   0   0   0   0]
[  0 100 100 100   0]
[  0 100 100 300 200]

给定一个列表以及要添加到这些索引的索引和值对列表,您可以通过以下方式实现此目的

lst = [0] * 10
values = [(3, 100), (5, 200), (7, 300)]

for index, value in values:
     lst[index] = value

print(lst)  # [0, 0, 0, 100, 0, 200, 0, 300, 0, 0]

一般来说,您必须遍历要使用的索引,所以它不能比这个更好 - O(m),其中 m 是索引的数量。