4 回答
TA贡献1828条经验 获得超13个赞
假设您想按数字的整数值进行分组(因此数字向下舍入),这样的方法可以工作:
>>> a = [0, 0.5, 1, 1.5, 2, 2.5]
>>> groups = [list(g) for _, g in itertools.groupby(a, int)]
>>> groups
[[0, 0.5], [1, 1.5], [2, 2.5]]
那么求平均就变成:
>>> [sum(grp) / len(grp) for grp in groups]
[0.25, 1.25, 2.25]
这假设a已经排序,如您的示例所示。
TA贡献1816条经验 获得超6个赞
如果您使用其他库没有问题:
import pandas as pd
import numpy as np
a = [0, 0.5, 1, 1.5, 2, 2.5]
print(pd.Series(a).groupby(np.array(a, dtype=np.int32)).mean())
给出:
0 0.25
1 1.25
2 2.25
dtype: float64
TA贡献1829条经验 获得超4个赞
如果您想要使用字典的方法,您可以像这样继续:
dic={}
a = [0, 0.5, 1, 1.5, 2, 2.5]
for items in a:
if int(items) not in dic:
dic[int(items)]=[]
dic[int(items)].append(items)
print(dic)
for items in dic:
dic[items]=sum(dic[items])/len(dic[items])
print(dic)
TA贡献1824条经验 获得超5个赞
您可以使用groupby
轻松获得它(您可能需要先对列表进行排序):
from itertools import groupby
from statistics import mean
a = [0, 0.5, 1, 1.5, 2, 2.5]
for k, group in groupby(a, key=int):
print(mean(group))
会给:
0.25
1.25
2.25
添加回答
举报