2015-02-10 58 views
0

爲什麼這樣的構造不起作用?Int轉換爲str使用循環

l = [1,2,3] 
for x in l: 
    x = str(x) 
    print(l) 

它returnes:

[1, 2, 3] 
[1, 2, 3] 
[1, 2, 3] 

,而不是預期:

['1', '2', '3'] 
['1', '2', '3'] 
['1', '2', '3'] 

回答

2

爲你打印原始列表,而無需修改它每次迭代。

使用map()

list(map(str, l)) 
>> ['1', '2', '3'] 

或列表理解

l = [str(x) for x in l] 
+0

你需要'list(map ..)'for python3 – 2015-02-10 09:55:48

+0

當然,我錯過了python3標籤,謝謝! – 2015-02-10 09:56:42

+0

不錯,謝謝! – 2015-02-10 10:09:25

0

當你做x = str(x)它改變xstr值(在列表而不是元素l

但是當你試圖改變名單l

我建議你嘗試列表理解:

l = [str(x) for x in l]

0

您需要存儲回鑄造X返回列表如下:

l = [1,2,3] 
new_l = [] 
for x in l: 
    new_l.append(str(x)) 
    print(new_l) 
0

另外,如果你不習慣了地圖(見其他答案)你可以使用:

for i,x in enumerate(l): 
    l[i] = str(x) 

但其他答案只是更好。