Python将列表字符串元素转整数报ValueError的解决方法
报错产生原因
- 直接触发原因:你列表里存的是带小数点的字符串(比如
'0.93'),Python的int()没法直接把这种表示小数的字符串转成整数——它只能直接转长得像整数的字符串,比如'1'、'256'这种,碰到带小数点的字符串就会抛你看到的这个值错误。 - 原代码还有两个隐藏问题:一是做除法用的
no_of_times根本没定义,就算类型转对了也会报变量不存在的错误;二是如果你绕开直接转int的报错,先转float再强转int,你列表里0.93、0.87这种小于1的数会被直接截断成0,算出来的平均值完全不对,根本满足不了需求。
正确实现方案
算平均值根本不需要把元素转成整数,先把字符串转成浮点数计算就行,代码如下:
list_1 = ['0.93', '1.00', '1.00', '0.93', '0.87'] print("The list: ", list_1) # 批量把字符串转成浮点数 num_list = [float(item) for item in list_1] # 求和除以元素总数就是平均值,不需要额外定义计数变量 avg = sum(num_list) / len(num_list) print("平均值:", avg)
运行后得到的正确平均值是0.946。
如果你后续确实有转整数的需求,必须先转float再转int,写法是[int(float(x)) for x in list_1],但这种方式会丢失小数精度,完全不适合当前的平均值计算场景。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

