整数列表和词典的平均值
问题描述:
是否有计算两个或多个列表甚至字典值的平均值的方法?整数列表和词典的平均值
这是我想出了:
lista = [1, 2, 3, 4, 5]
listb = [5, 4, 3, 2, 1]
listavg = [0]*5
count = 0
for i in lista:
listavg[count] = (i + listb[count])/2
count += 1
print(listavg)
[3.0, 3.0, 3.0, 3.0, 3.0]
但是,如果我有什么100名名单?那么如果这些列表是在像这样的字典里呢:
{'A': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'B': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'C': [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'D': [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], 'E': [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], 'F': [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], 'G': [6, 6, 6, 6, 6, 6, 6, 6, 6, 6], 'H': [7, 7, 7, 7, 7, 7, 7, 7, 7, 7], 'I': [8, 8, 8, 8, 8, 8, 8, 8, 8, 8], 'J': [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]}
P.S.列表的长度总是相同的。
编辑:重要说明是,我想每个索引的平均值,而不是列表的平均值。
答
您可以使用zip()
获得从输入列表组合在一起指数明智的每一个元素的元组,并使用sum()
将它们加在一起:
>>> def averages(*lists):
return [sum(els)/len(els) for els in zip(*lists)]
>>> averages([1, 2, 3, 4, 5], [5, 4, 3, 2, 1])
[3.0, 3.0, 3.0, 3.0, 3.0]
>>>
也许你可以使你的列表成为列长度向量的元组,然后使用#[statistics.mean](https://docs.python.org/3/library/statistics.html)函数 – Pikaurd