Python基础算法:计算列表平均值的完整指南

70 阅读3分钟

一、引言:列表平均值计算的重要性

在数据分析和日常编程中,计算平均值是最基础也最常用的统计操作之一。无论是学生成绩分析、销售数据统计,还是科学实验数据处理,平均值都能帮助我们快速了解数据的集中趋势。Python作为一门强大的编程语言,提供了多种方式来计算列表的平均值。本文将详细讲解如何使用Python计算整数列表的平均值,并通过具体代码示例展示算法的实现过程。

二、算法实现与代码解析

案例:计算整数列表平均值

问题描述:给定一个包含多个整数的列表,编写程序计算这些数字的平均值并输出结果。

#编程:自定义一个整数列表a,计算一个列表的平均值;并打印输出结果。
a = [56,96,78,85,63,45,26]
sum1 = 0
for i in a:
    sum1 = sum1 +i
avg1 = sum1/len(a)
print("列表a的平均值为:",avg1)

运行结果:

22.png

代码分析:

这段代码清晰地展示了计算列表平均值的完整过程:

  1. 数据初始化

    • a = [56,96,78,85,63,45,26]:定义一个包含7个整数的列表
    • sum1 = 0:初始化累加变量,用于存储所有元素的和
  2. 循环累加过程

    • for i in a::使用for循环遍历列表中的每一个元素
    • sum1 = sum1 + i:将当前元素的值累加到sum1中
    • 遍历过程:
      • 第一次循环:i=56, sum1=0+56=56
      • 第二次循环:i=96, sum1=56+96=152
      • 第三次循环:i=78, sum1=152+78=230
      • 第四次循环:i=85, sum1=230+85=315
      • 第五次循环:i=63, sum1=315+63=378
      • 第六次循环:i=45, sum1=378+45=423
      • 第七次循环:i=26, sum1=423+26=449
  3. 平均值计算

    • avg1 = sum1/len(a):用总和除以列表长度得到平均值
    • len(a)返回列表长度7
    • 计算过程:449 ÷ 7 = 64.14285714285714
  4. 结果输出

    • print("列表a的平均值为:",avg1):输出计算结果

三、算法优化与扩展

1. 使用Python内置函数简化代码

# 优化版本:使用sum()函数
a = [56,96,78,85,63,45,26]
avg1 = sum(a) / len(a)
print("列表a的平均值为:", avg1)

# 添加格式化输出
print("列表a的平均值为:{:.2f}".format(avg1))  # 保留两位小数

优化说明

  • sum(a):直接计算列表所有元素的和,比循环更简洁高效
  • 格式化输出:{:.2f}控制输出格式,保留两位小数

2. 处理空列表的健壮版本

def calculate_average(numbers):
    """计算列表的平均值,处理空列表情况"""
    if not numbers:  # 如果列表为空
        return 0
    return sum(numbers) / len(numbers)

# 测试用例
test_cases = [
    [56,96,78,85,63,45,26],  # 正常列表
    [],                       # 空列表
    [100],                    # 单个元素
    [10, 20, 30, 40, 50]      # 均匀分布
]

for i, nums in enumerate(test_cases, 1):
    avg = calculate_average(nums)
    print(f"测试{i}: 列表{nums}的平均值为: {avg}")

3. 加权平均值计算

def weighted_average(values, weights):
    """计算加权平均值"""
    if len(values) != len(weights):
        raise ValueError("值和权重的数量必须相等")
    
    total = sum(v * w for v, w in zip(values, weights))
    total_weight = sum(weights)
    
    return total / total_weight if total_weight != 0 else 0

# 示例:计算加权平均成绩
scores = [85, 92, 78, 90]
weights = [0.3, 0.3, 0.2, 0.2]  # 各科权重
weighted_avg = weighted_average(scores, weights)
print(f"加权平均成绩: {weighted_avg:.2f}")