2012-12-01 44 views
0

我是Python的初學者,我有一個簡短的問題,我一直沒能找到一個解決方案:的Python:規範的項目追加到列表

有什麼辦法來規範是什麼覆蓋在列表中?例如,我有一個填充零的列表,然後我將逐漸填充其他元素,我希望能夠做的是在零以外的內容被覆蓋時創建一個錯誤。有沒有什麼聰明的方法來做到這一點?

我可以使用類似:

a = [0, 1, 0, 1, 0, 0, 0, 0] 
b = [] 
[i for i, e in enumerate(a) if e != 0] 
return False 

或類似的東西?

+0

你叫有什麼用 '覆蓋'?您是否想用其他對象替換元素而不更改列表中元素的總數? – eyquem

+0

這是正確的!我以前沒看到你的答案,但是,我想保留元素的總數,但用其他對象替換零元素:) – Nekroz

回答

2

您可以使用函數更改列表中的元素,該元素檢查元素是否爲0

def setElement(l, index, element): 
    '''Change the element from given list(l) at given index.''' 
    if l[index] != 0: 
     raise Exception("Attempt to overwrite %s instead of 0" %l[index]) 
    else: 
     l[index] = element 

現在你可以通過調用setElement(<list>, <index>, <element>)

In[1]: a = [0, 0, 0, 0, 0, 0, 0] 

In[2]: setElement(a, 2, 3) 

In[3]: setElement(a, len(a)-1, "Last Element!") 

In[4]: setElement(a, len(a)-1, 53) 
Out[4]: Attempt to overwrite "Last Element!" instead of 0 

In[5]: print(a) 
Out[5]: [0, 0, 3, 0, 0, 0, "Last Element"] 
+0

謝謝!在我理解它之前,我將不得不嘗試一下你的代碼,但如果它是字符串而不是用整數替換零的話,是否也可以使用它? – Nekroz

+0

是的,你可以使用它作爲任何值,我編輯了這個例子,所以你也可以看到一個字符串。 – 2012-12-01 13:56:07

+0

非常感謝!你剛剛度過了我的一天! – Nekroz