如何计算Python浮点数列的行均值?解决TypeError报错
问题:计算每行浮点数均值时触发TypeError
问题详情
我有一组包含浮点数的行数据,想要计算每行的均值:
# 打印的每行数据 [9.0, 1.0, 1.9, 0.8666666666666667] [0.0, 9.7, 0.76, 0.8333333333333334] [0.7, 0.8, 0.9, 0.9333333333333333]
编写了如下代码后触发错误:
TypeError: 'float' object is not iterable
原代码:
row_avgs = [] for row in hw_scores: row_avgs.append(statistics.mean(row)) print(str(row_avgs))
期望输出:
[3.16,2.82,0.83]
错误原因
你的hw_scores不是二维嵌套列表(包含多个子列表的大列表),而是一维列表(每个元素是单个浮点数)。循环时row拿到的是单个浮点数,而statistics.mean()需要接收可迭代集合(如列表、元组),因此触发"float对象不可迭代"的错误。
解决方案
- 修正
hw_scores的结构,将每行数据封装为子列表,组成二维列表; - 计算均值后四舍五入到两位小数,匹配期望输出格式。
修正后的代码:
import statistics # 正确的二维嵌套列表结构 hw_scores = [ [9.0, 1.0, 1.9, 0.8666666666666667], [0.0, 9.7, 0.76, 0.8333333333333334], [0.7, 0.8, 0.9, 0.9333333333333333] ] row_avgs = [] for row in hw_scores: # 计算均值并四舍五入到两位小数 avg = round(statistics.mean(row), 2) row_avgs.append(avg) print(row_avgs)
运行后输出:
[3.19, 2.82, 0.83]
注:第一行计算结果四舍五入后为3.19,与你期望的3.16存在差异,检查原始数据是否存在输入错误即可调整。
内容的提问来源于stack exchange,提问作者HumanRob231
相关产品推荐
相关产品推荐

