如何打印列表中元组的平均值?附现有实现代码及测试情况
如何打印元组列表的平均值并优化你的函数
首先解决你最关心的打印问题:调用你的函数后,直接用print()函数输出返回值就可以了。举个例子:
some_records = [('2010-01-01',100), ('2010-01-02',200), ('2010-01-03',300)] # 调用函数得到平均值 average = average_vehicles(some_records) # 打印结果 print(average)
如果想要更友好的输出格式,还可以用f-string来格式化:
print(f"The average number of vehicles is: {average}")
另外,我注意到你的函数里有个小问题:当列表为空时,你返回的是字符串"None",但需求是返回Python的None对象(不是字符串)。你需要把average = "None"改成average = None,这样才符合要求。
为了让代码更简洁、更符合Python风格,你可以优化一下函数实现,不用手动循环累加,而是用sum()和len()来简化:
def average_vehicles(vehicle_records): """Return average of vehicles, or None if the input list is empty""" # 判断列表是否为空,用not vehicle_records比!= []更简洁 if not vehicle_records: return None # 用生成器表达式计算所有元组第二个元素的总和 total_vehicles = sum(record[1] for record in vehicle_records) # 计算平均值并返回 return total_vehicles / len(vehicle_records)
这个优化后的代码逻辑和你的原代码一致,但更简洁易读。
最后,我们可以测试两种场景的打印效果:
# 测试有数据的情况 some_records = [('2010-01-01',100), ('2010-01-02',200), ('2010-01-03',300)] avg = average_vehicles(some_records) print(f"Average: {avg}") # 输出 Average: 200.0 # 测试空列表的情况 empty_records = [] avg_empty = average_vehicles(empty_records) print(avg_empty) # 输出 None
内容的提问来源于stack exchange,提问作者user9644895
相关产品推荐
相关产品推荐

