python中如何找列表的中位数

python中如何找列表的中位数

作者:Rhett Bai发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何计算Python列表的中位数?

我有一个数字列表,想知道如何在Python中找出它的中位数,有没有简便的方法?

A

使用Python统计模块中的median函数

Python的statistics模块提供了median()函数,可以直接用来计算列表的中位数,例如:

import statistics
numbers = [1, 3, 5, 7, 9]
median_value = statistics.median(numbers)
print(median_value)  # 输出: 5

这适用于含有奇数或偶数个数字的列表。

Q
如何自己编写代码计算列表的中位数?

如果不想使用库函数,如何用Python写代码来找出一个列表的中位数?

A

通过排序列表并选取中间元素来计算中位数

可以先对列表进行排序,然后根据列表长度奇偶来选出中位数。

代码示例:

numbers = [4, 1, 7, 3, 6]
numbers.sort()
n = len(numbers)
if n % 2 == 1:
    median = numbers[n // 2]
else:
    median = (numbers[n // 2 - 1] + numbers[n // 2]) / 2
print(median)

这样可以处理任意长度的数字列表。

Q
处理包含非数字元素的列表计算中位数应该注意什么?

怎么保证列表中包含非数值类型时,计算中位数不会出错?

A

过滤非数字元素,确保输入数据有效

在计算中位数之前,需要先过滤掉列表中非数字类型元素,例如字符串或None值,可以使用列表解析方式筛选数字:

import numbers
raw_list = [3, 'a', 7, None, 5]
clean_list = [x for x in raw_list if isinstance(x, numbers.Number)]
import statistics
median_value = statistics.median(clean_list)
print(median_value)

这样可以避免类型错误,提高代码鲁棒性。