MST

星途 面试题库

面试题:Python数值列表简单统计计算之中等题

给定一个Python列表,例如 [1, 2, 3, 4, 5],请编写一个函数,返回该列表元素的平均值、中位数和标准差。注意处理列表为空的情况。
45.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import math


def calculate_stats(lst):
    if not lst:
        return None, None, None
    total = sum(lst)
    mean = total / len(lst)
    sorted_lst = sorted(lst)
    mid = len(sorted_lst) // 2
    median = sorted_lst[mid] if len(sorted_lst) % 2 != 0 else (sorted_lst[mid - 1] + sorted_lst[mid]) / 2
    variance = sum((x - mean) ** 2 for x in lst) / len(lst)
    std_dev = math.sqrt(variance)
    return mean, median, std_dev

你可以这样调用这个函数:

lst = [1, 2, 3, 4, 5]
mean, median, std_dev = calculate_stats(lst)
print(f"平均值: {mean}")
print(f"中位数: {median}")
print(f"标准差: {std_dev}")

上述代码定义了一个calculate_stats函数,该函数接受一个列表作为参数,返回该列表的平均值、中位数和标准差。如果列表为空,则返回None, None, None。在函数内部,先计算平均值,然后对列表进行排序以计算中位数,最后计算标准差。

  1. 平均值计算
    • 使用sum函数计算列表元素总和,再除以列表长度得到平均值。
  2. 中位数计算
    • 对列表进行排序。
    • 根据列表长度的奇偶性来计算中位数。如果长度为奇数,直接返回中间元素;如果长度为偶数,返回中间两个元素的平均值。
  3. 标准差计算
    • 首先计算方差,方差是每个元素与平均值差的平方的平均值。
    • 使用math.sqrt计算方差的平方根得到标准差。