首页 > 解决方案 > 在 python 中使用 range 关键字遍历列表和使用其他变量之间有区别吗?

问题描述

我正在尝试制作一个程序,在我的字符串的每一行前面添加一个“*”。

这就是我所做的:

text = "Lists of animals, Lists of aquarium life"

lines = text.split(',')

for l in lines:
    l = '* ' + l
print(lines)

这给出了输出:

['Lists of animals', 'Lists of aquarium life']

但是,如果我在我使用的地方做一个简单的改变:

for i in range(len(lines)):
    lines[i] = '* ' + lines[i]
print(lines)

这给了我想要的输出:

['* Lists of animals', '* Lists of aquarium life']

为什么会这样?只有当我通过 range 方法遍历列表时,我才能对列表进行就地更改?

谢谢您的帮助。

标签: pythonpython-3.x

解决方案


因为工作方式for l in lines: l = '* ' + l是这样的:

for i in range(len(lines)):
    l = lines[i]
    l = '* ' + l

因此,如果您将任何内容分配给l,它不会影响lines[i]

如果您不想使用该range方法,请改用列表推导:

lines = ['* ' + l for l in lines]

推荐阅读