【问题标题】:How can we add a element at multiple index of a list without using loops?我们如何在不使用循环的情况下在列表的多个索引处添加元素?
【发布时间】:2021-06-24 01:09:04
【问题描述】:

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

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) 时间。 我想知道我们可以在不使用循环的情况下在列表的多个索引处添加一个值吗?

【问题讨论】:

  • 除非您使用专门的数据结构(我不确定我是否知道具有合适特征的数据结构),否则修改列表中的 k 个不同元素将是 O(k) 充其量,无论您使用哪种方法。

标签: python python-3.x list loops add


【解决方案1】:

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

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 是索引的数量。

【讨论】:

  • 回答问题时,建议使用OP的值,而不是其他值
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2017-11-10
    • 1970-01-01
    • 2018-02-08
    • 2018-03-21
    • 2022-01-22
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多