2016-11-26 134 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