gpt4 book ai didi

python - 是否有 python 方法将指定元素设置为列表中的某个值?

转载 作者:行者123 更新时间:2023-11-28 22:03:33 25 4
gpt4 key购买 nike

numpy 有一个函数可以将指定的元素设置为某个值

a=numpy.zeros(10)
numpy.put(a, [2,3],1)

但是,这个方法会直接改变'a',如果成功则返回None。

无论如何我们可以保持'a'完整并返回新数组吗?

(我不一定要用numpy,依赖最少的会更好)

最佳答案

如果没有函数调用,并且在我看来更具可读性,您可以这样做:

>>> a = [0, 0, 0, 0, 0]
>>> b = a[:]

>>> b[1:3] = [2, 3]

>>> a
[0, 0, 0, 0, 0]
>>> b
[0, 2, 3, 0, 0]

请注意,a[:] 对于大型列表可能会非常慢,因为 - 正如 Makato 所说 - 它会创建列表的全新副本。这也是 numpy 附带“原地”(in place)函数 put() 的原因。如果可以,请避免完全复制列表。

要了解性能,您可以将 a[:] 视为 [i for i in a]

我不熟悉 numpy,所以如果我误解了你想“在位置 [a, b, c] 插入 x”,相反,你可以这样做:

>>> def put(my_list, x, positions):
... return [x if n in positions else i for n, i in enumerate(my_list)]
...
>>> put(a, 1, [1, 2])
[0, 1, 1, 0, 0]

或者,或者,

>>> b = a[:]
>>> b[1:3] = [1] * 2
>>> b
[0, 1, 1, 0, 0]

这会稍微慢一些。

关于python - 是否有 python 方法将指定元素设置为列表中的某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com