python用for遍历列表时不能修改列表值吗?

python用for遍历列表时不能修改列表值吗?为什么这样输出的列表还是和原列表一样?

首先,可以肯定的是,for 循环遍历时可以修改列表值。
那么问题出在哪?在for 循环中的赋值语句magician='the Great' + magician,这个语句并没有改变列表元素,在for magician in magicians中,magician 只是一个得到了列表元素的值的临时变量,修改这个临时变量并不会影响的列表里的值。
原代码相当于:magician =magicians[i], magician ='theGreat'+magician, 很明显,这里没有影响到列表元素,而是只改变了临时变量。
可以使用以下代码:
for i in range(len(magicians)):
magicians[i] = 'the Great' + magicians[i]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-27
你没有把修改后的添加列表追问

需要添加新列表吗?for不可以在原列表直接修改值吗

追答

不能,需要创建新列表

用c.append(修改后的值),然后输出c就行了

追问

能解释一下为什么这样使用for修改值不对吗QAQ

追答

可以修改,但是不能替换原来列表中的成员,列表中直接修改成员的方法只有
列表名[索引]=修改后的值

第2个回答  2018-04-27
粗略的示意:
def make_great(m):
m='the Great '+m
print(m)
return m
------------------------------------
ms=[]
ms=[make_great(m) for m in ms]追问

谢谢!不过为什么可以这样用啊,make_great()不是一个针对列表的函数吗,底下为什么可以针对magician这个值使用呢(小白不太懂...

而且这个还是不行啊...反复输出的都是一个量

追答

这都是你需要一个函数处理的情况

一般这样就可以了

ms=['tg '+m for m in ms]

print(ms)

本回答被提问者和网友采纳