2016-05-18 71 views
0

我目前正試圖弄清楚如何用一個給定元素填充列表,覆蓋列表中其餘元素。所以用一個元素完全替換給定列表中的每個元素。 我怎樣才能用零填充一個列表,覆蓋列表中的所有元素?替換元素並刪除所有元素

的列表中的值= [1,2,3,4,5]是有辦法使它所以列表是值= [0,0,0,0,0]

和是有一種方法可以從列表中刪除所有元素? 因此對於值= [1,2,3,4,5]使其值[]?

回答

2
>>> x = [1, 2, 3] 
>>> x[:] = [0] * len(x) 
>>> x 
[0, 0, 0] 

說明:左側是所有指數片,分配給片是允許的,而右手邊是產生重複的元素列表的很好的語法。


與此相關的,永遠不要做:

>>> a = [[0] * 5] * 5 
>>> a 
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 

因爲那麼像這樣的事情會發生:

>>> a[0][0] = 3 
>>> a 
[[3, 0, 0, 0, 0], [3, 0, 0, 0, 0], [3, 0, 0, 0, 0], [3, 0, 0, 0, 0], [3, 0, 0, 0, 0]] 
+0

我喜歡!順利把戲@亞歷霍爾 – vikingben

+0

做列表索引值必須是整數 – expertinthemaking22

+0

@ expertinthemaking22索引是整數,值(列表的內容)可以是任何東西。 –

-1

要更換所有元素與一個列表值:

values = [0] * len(values) 

這重複0根據需要多少次來組成列表的長度,然後將其分配給values。做不是使用此方法與可變對象一樣自定義類!


要清空列表,指定名稱爲空列表:無功能

values = [] 
+0

'values = ...'不會更改原始列表對象。 – vaultah

+0

不,但它會用空列表覆蓋名稱'values',這似乎是OP所要求的。最終結果是一樣的。如果我錯了,請糾正我。 –

+0

區別在於,如果我在代碼之前運行'values_copy = values',那麼'values_copy'將保留爲原始列表。 –

0
  1. 列表理解 - 只要更換元件。
  2. 使用clear()或者只是用新的空列表覆蓋,我猜。

    x = [1, 2, 3] 
    [0 for elem in x] 
    x.clear()