2012-02-26 132 views
0

我有一個列表,我想在此列出一個新列表newlist[i] = 'literal' + oldlist[i]爲什麼我無法在開始時修改列表元素?

我曾嘗試這樣的代碼:

i = 1 
for elem in oldlist: 
newlist[i] = 'literal' + oldlist[i] 
i += 1 

i = 1 
for elem in newlist: 
elem = 'literal' + oldlist[i] 
i += 1 

和許多類似的嘗試仍然不斷收到錯誤,如「不能分配給函數調用」等。我的代碼應該如何?

回答

4

列表是從零開始意味着列表中的第一項是索引0

例如,

l = [1, 2, 3, 4, 5] 

print(l[0]) # 1 
print(l[1]) # 2 

您在1開始你的索引,因此您的第一項永遠不會被改變。


儘管您的代碼不符合規範的「索引循環」格式。它應該看起來更像是這樣的:

for i in range(len(oldlist)): 
    newlist[i] = 'literal' + oldlist[i] 

但更好的方法來做到這一點是使用列表理解:

newlist = ['literal' + olditem for olditem in oldlist] 
+0

謝謝你教我約列表理解!這是一個我不知道的非常有用的概念。 – rab777hp 2012-02-26 21:32:30

1

因爲elem是列表中的值而不是對列表中位置的引用。 (我參考你的第二個例子)

3

使用列表理解。

newlist = ['literal' + x for x in oldlist] 
1

嘗試列表理解:

newlist = [item + literal for item in oldlist] 

此外,請記住列表索引從零開始編號,這意味着最大索引等於len(list) - 1

相關問題