更改列表的指定索引的最佳方法

Meh*_*902 0 python

我想立即替换列表中的一些元素.

假设我们有这些列表:

list = [1, 2, 3, 4, 5, 6]
idx = [1, 3, 4]
new = [100, 200, 300]
Run Code Online (Sandbox Code Playgroud)

我想listnew值替换元素1,3,4.例如 :

list[idx] = new
Run Code Online (Sandbox Code Playgroud)

所以最后的清单是=> [1, 100, 3, 200, 300, 6]

我知道你可以在Matlab中以这种方式使用它,但想知道我应该在Python中做什么?

注意:我知道可以使用循环并执行此操作.


编辑:我想使用纯python解决方案.

ale*_*xis 5

"pythonic"的方式是使用zip:

for i, n in zip(idx, new):
    L[i] = n
Run Code Online (Sandbox Code Playgroud)

Python本身不支持matlab风格的数组操作,但如果你对这种编码风格感兴趣,你可以调查numpy(参见@ abarnert的回答).

  • 或者根本不改变原地列表; 类似于`d = dict(zip(idx,new)); L = [d.get(idx,value)为idx,值为枚举(L)]`. (2认同)