2016-07-31 87 views
0
我在Python中的列表,包括編輯元素的問題

,我有以下代碼:Python:列表中的元素沒有被更改?

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

print(mylist) 

我希望可以將輸出爲「新概念英語」三次(一次爲每個迭代)然後列表[「新概念英語」,「新概念英語」,「新概念英語」],而是我已經得到:

新詞
新詞
新詞
[「一」 ,'day','soon']

問題:爲什麼列表顯然發生了變化,但是當作爲一個整體列表打印時,然後恢復爲其原始形式?

注:我有固定用下面的代碼的問題,但我仍然好奇,爲什麼原來的方法失敗

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

print(mylist2) 
+0

認爲'x'是'mylist2'的按值傳遞副本。 – intboolstring

+0

@intboolstring我不太確定我確切地知道你的意思是對不起?我只是在長時間的休息之後重新開始編程,通過價值傳遞是什麼意思? – Plopern

+0

我現在在手機上,所以我不能輸入太多。谷歌傳遞值與傳遞 – intboolstring

回答

2

的問題是,當你重複使用for x in mylist,然後分配一個值x,您正在創建一個名爲x的新變量,這就是您要打印的內容。您不能以這種方式更改列表,只能通過如下迭代:

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

完美,比我的解決方案更好,並很好地解釋,謝謝! – Plopern

相關問題