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



我有一个列表,我想在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

许多类似的尝试仍然会出现诸如"无法分配给函数调用"之类的错误。我的代码应该如何?

列表是从零开始的,这意味着列表中的第一项位于索引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]

使用列表理解。

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

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

尝试列表理解:

newlist = [item + literal for item in oldlist]

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

最新更新