2016-11-26 181 views
0

我想將list的Python元素從str轉換爲int字符串到int轉換的列表

我的初步名單如下:

l1 = ['723', '124', '1,211', '356'] 

我嘗試代碼:

l1 = list(map(int, l1)) 

導致的,告訴我一個錯誤:

ValueError: invalid literal for int() with base 10: '1,211' 

另外,我試過mapfloat

l1 = list(map(float, l1)) 

,但是,這也導致錯誤:

ValueError: could not convert string to float: '1,211' 

我一直在使用地圖功能試圖在代碼都intfloat。任何人都可以糾正我在哪裏我錯了。

+1

是'1,211'應該是 「1點211」 或 「千211」? –

回答

2

用一個簡單的列表理解做吧。

>>> l1 = ['723', '124', '1,211', '356'] 
>>> [int(i.replace(',','')) for i in l1] 
[723, 124, 1211, 356] 
4

映射任一intfloat含有','一個值將失敗,因爲轉換str s到漂浮或整數具有它們代表正確地形成數的要求(Python不允許數千','作爲分隔符爲浮,它與元組衝突)

如果','是千位分隔符,使用replace(',', '')(如@tobias_k注)在修真你提供給map和應用int立刻道:

r = list(map(int , (i.replace(',', '') for i in l1))) 

得到想要的結果爲r的:

[723, 124, 1211, 356] 
+0

它是1211而不是1.211。在這種情況下我該怎麼辦? – vikky

+1

在這種情況下,'i.replace(',','')' –

+0

@tobias_k它工作。 thnks – vikky

1

這可能幫助:

l1 = ['723', '124', '1,211', '356'] 
l1 = [int(i.replace(',','')) for i in l1] 
for x in l1: 
    print("{:,}".format(x)) 

輸出:

723 
124 
1,211 
356