我可以在Python中一次更改列表中的多个项目吗?
问题1: 例如,我的列表是
lst=[0,0,0,0,0]
我希望第三和第五项成为99.我知道我可以通过
来实现lst[2] = 99
lst[4] = 99
但是,有没有更简单的方法呢?
问题2:在这种情况下,我的目标值是[99,98],我的指数是[2,4],所以我的结果是[0,0,99,0,98]。有没有简单的方法来做到这一点?感谢。
答案 0 :(得分:5)
你可以这样做,
>>> lst=[0,0,0,0,0]
>>> target = [99,98]
>>> pos = [2,4]
>>> for x,y in zip(pos,target):
lst[x] = y
>>> lst
[0, 0, 99, 0, 98]
答案 1 :(得分:1)
只要您尝试分配的索引集可以由切片引用(即通过启动,停止,增量),就可以使用slice assignment。例如:
lst=[0,0,0,0,0]
lst[2::2] = [99, 98]
print s
# [0, 0, 99, 0, 98]
答案 2 :(得分:0)
使用 numpy
还可以更好地控制此类操作:
import numpy as np
lst = np.asarray([0,0,0,0,0])
lst[[2,4]]=[99, 100]
>>> lst
array([ 0, 0, 99, 0, 100])