python - 如何从 Python 中的 2 个不同列表计算中位数
问题描述
我有两个列表 note = [6,8,10,13,14,17] Effective = [3,5,6,7,5,1] ,第一个代表成绩,第二个代表班级中的学生拿到那个档次。所以 3 个孩子得了 6 和 1 得了 17。我想计算平均值和中位数。我得到的意思是:
note = [6,8,10,13,14,17]
Effective = [3,5,6,7,5,1]
products = [] for num1, num2 in zip(note, Effective):
products.append(num1 * num2)
print(sum(products)/(sum(Effective)))
我的第一个问题是,如何将两个列表变成第三个列表:
(6,6,6,8,8,8,8,8,10,10,10,10,10,10,13,13,13,13,13,13,13,14,14,14,14,14,17)
为了得到中位数。
谢谢, 东卡
解决方案
Effective
这是一种在内部级别上迭代的方法,以按照 中number
指定的次数复制每个Effective
,并使用 获取中位数statistics.median
:
from statistics import median
out = []
for i in range(len(note)):
for _ in range(Effective[i]):
out.append(note[i])
print(median(out))
# 10