为什么我一开始无法修改列表元素?

时间:2012-02-26 20:40:49

标签: python list loops

我有一个列表,我想在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 :(得分: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]

答案 1 :(得分:3)

使用列表理解。

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

答案 2 :(得分:1)

因为elem是列表中的值,而不是对列表中位置的引用。 (我参考你的第二个例子)

答案 3 :(得分:1)

尝试列表理解:

newlist = [item + literal for item in oldlist]

另外,请记住列表索引从零开始编号,这意味着最大索引等于len(list) - 1