Python:列表中的元素没有被更改?

时间:2016-07-31 20:26:35

标签: python list python-3.x

我在使用Python编辑列表中遇到问题时,我得到了以下代码:

mylist = ["one", "day", "soon"]
for x in mylist: 
    x = "New word"
    print(x)

print(mylist)

我希望输出为" New Word"三次(每次迭代一次),然后是[" New Word"," New Word"," New Word"]的列表,而不是我&#39已经得到了:

新词
新词
新词
['一个',' day','很快']

问题:为什么列表显然会发生变化,但在作为整个列表打印时又会恢复为原始形式?

注意:我已使用以下代码修复了该问题,但我仍然对原始方法失败的原因感到好奇

mylist2 = ["a", "b", "c"]
for x in mylist2 : 
    mylist2[mylist2.index(x)] = "Woo"

print(mylist2)

1 个答案:

答案 0 :(得分:2)

问题在于,当您使用for x in mylist进行迭代,然后为x分配值时,您将创建一个名为x的新变量,这就是您要打印的内容。您不能以这种方式更改列表,只能通过这样迭代:

for i in range(len(mylist)):
    mylist[i] = "New word"