我想将list
个python元素从str
转换为int
。
我的初始列表如下所示:
l1 = ['723', '124', '1,211', '356']
我试过的代码:
l1 = list(map(int, l1))
导致错误告诉我:
ValueError: invalid literal for int() with base 10: '1,211'
或者,我尝试map
与float
:
l1 = list(map(float, l1))
但是,这也导致了一个错误:
ValueError: could not convert string to float: '1,211'
我使用map函数在代码中尝试了int
和float
。任何人都可以在我出错的地方纠正我。
答案 0 :(得分:4)
将int
或float
映射到包含','
的值将失败,因为将str
转换为浮点数或整数要求它们表示正确形成的数字(Python不允许','
作为浮动或的千位分隔符,它与元组冲突)
如果','
是千位分隔符,请在您提供给replace(',', '')
的理解中使用map
(注明@tobias_k)并立即应用int
:
r = list(map(int , (i.replace(',', '') for i in l1)))
获取r
的所需结果:
[723, 124, 1211, 356]
答案 1 :(得分:2)
使用简单的列表理解来做到这一点。
>>> l1 = ['723', '124', '1,211', '356']
>>> [int(i.replace(',','')) for i in l1]
[723, 124, 1211, 356]
答案 2 :(得分: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