2012-12-01 45 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