2015-04-03 99 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

相關問題