在Python中一次更改列表中的多个项目

use*_*670 1 python list

我可以在Python中一次更改列表中的多个项目吗?

问题1:例如,我的清单是

lst=[0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

我希望第三和第五项成为99。我知道我可以做到

lst[2] = 99
lst[4] = 99
Run Code Online (Sandbox Code Playgroud)

但是,有没有更简单的方法可以做到这一点?

问题2:在这种情况下,我的目标值为[99,98],我的索引为[2,4],所以我的结果将是[0,0,99,0,98]。有没有简单的方法可以做到这一点?谢谢。

Avi*_*Raj 6

你可以这样

>>> 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]
Run Code Online (Sandbox Code Playgroud)


tza*_*man 5

只要您尝试分配的索引集可以由切片引用(即通过开始、停止、增量),您就可以使用切片分配。例如:

lst=[0,0,0,0,0]
lst[2::2] = [99, 98]
print s
# [0, 0, 99, 0, 98]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。但我想我的意思是如果索引中没有规律。有什么办法可以做到这一点吗? (2认同)