2015-04-03 75 views
0

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

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

lst=[0,0,0,0,0] 

我想第三和第五项成为99.I知道我可以通过

lst[2] = 99 
lst[4] = 99 

但是做到这一点,有什么更简单的方法做到这一点?

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

回答

3

你可以做这样的,

>>> 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] 
+0

谢谢。如果我的目标值只有一个,我需要生成一个像target_value = [99] * len(index)这样的列表。或者有一个简单的方法来做到这一点? – user17670 2015-04-03 02:32:22

+0

是的,我想我会那样做。只是为了避免重复'for'循环,以防您有多个'target'值的条件 – 2015-04-03 03:48:04

1

您可以使用slice assignment只要设定你想分配指标到可以用切片引用(即通过启动,停止,增量) 。例如:

lst=[0,0,0,0,0] 
lst[2::2] = [99, 98] 
print s 
# [0, 0, 99, 0, 98] 
+0

谢谢。但我认为我的意思是指数中没有法律。有没有办法做到这一点? – user17670 2015-04-03 02:29:36

+0

对于任意一组索引,您必须循环。请参阅@Avinash Raj的回答。 – tzaman 2015-04-03 02:30:43

+0

我明白了。谢谢! – user17670 2015-04-03 02:32:43

相关问题