求助:如何从产品描述列表中计算平均容量?Python实现
解决方法
先说说你代码里的几个核心问题:
- 循环用
range(len(product_list))拿到的是索引值,你把变量名写成capacity容易混淆;而且product_list.split("-")是错误用法——split是字符串方法,得用列表里的单个元素调用,不是整个列表。 capacity["-":]完全不成立,capacity是数字索引,没法这么用切片,而且你还没把拆分出来的容量字符串转成数字。- 循环里直接
return average,第一次循环就结束函数了,根本没处理完所有产品。
下面是正确的实现思路和代码:
正确代码
def avg_capacity(product_list): total = 0.0 # 遍历列表里的每个产品描述字符串 for item in product_list: # 按"-"拆分字符串,得到[产品ID, 容量字符串]的列表 parts = item.split("-") # 取出容量部分,转成浮点数后累加到总和 capacity = float(parts[1]) total += capacity # 总和除以产品数量得到平均值 return total / len(product_list) # 测试示例 print(avg_capacity(['A1-10', 'B10-40', 'C403-50', 'D5-10'])) # 输出27.5 print(avg_capacity(['C12-100', 'A10-400'])) # 输出250.0
步骤解释
- 初始化
total为0.0,确保是浮点数类型,避免整数除法导致的精度问题。 - 直接遍历
product_list里的每个元素item,比用索引遍历更直观易懂。 - 对每个
item调用split("-")拆分,比如'A1-10'会被拆成['A1', '10']。 - 取拆分后的第二个元素(索引为1),转成浮点数(符合返回值要求的浮点数类型),加到总和
total里。 - 最后用总和除以产品总数(
len(product_list)),得到平均值并返回。
如果想写得更简洁,也可以用生成器表达式一行搞定:
def avg_capacity(product_list): return sum(float(item.split("-")[1]) for item in product_list) / len(product_list)
内容的提问来源于stack exchange,提问作者jdavis29
相关产品推荐
相关产品推荐

