为何字符串列表转浮点数后计算均值仍报类型错误?
问题原因及解决方法
问题出在你调用calc_mean时传入的还是原始的字符串列表strlist,根本没使用str2float转换后的数值列表。
str2float(strlist)函数的作用是接收一个字符串列表,返回一个新的数值列表,但它不会修改传入的原列表strlist。你只是打印了转换后的结果,却没把这个结果传给calc_mean,所以calc_mean处理的依然是原来的字符串元素,自然会触发类型错误。
修正方法
有两种常见的修正方式:
- 将转换后的列表赋值给变量,再传入
calc_mean
def calc_mean(arglist): return sum(arglist)/len(arglist) def str2float(strlist): flist = [float(i) if '.' in i else int(i) for i in strlist] return flist strlist = ['0.5','1.5','2.5','3.5'] # 保存转换后的数值列表 converted_list = str2float(strlist) print(converted_list) # 传入转换后的列表计算均值 print(calc_mean(converted_list))
- 直接将
str2float的返回值作为参数传给calc_mean
def calc_mean(arglist): return sum(arglist)/len(arglist) def str2float(strlist): flist = [float(i) if '.' in i else int(i) for i in strlist] return flist strlist = ['0.5','1.5','2.5','3.5'] print(str2float(strlist)) # 直接传转换后的结果 print(calc_mean(str2float(strlist)))
如果想让strlist本身变成数值列表,也可以重新赋值,但注意此时变量名strlist的语义与实际存储内容不符,不推荐这么做:
strlist = str2float(strlist) print(calc_mean(strlist))
内容的提问来源于stack exchange,提问作者user20156403
相关产品推荐
相关产品推荐

