假设您的列表如下:
[1,1,1,2,3,1,1,5,6,6,10]
使用标准Python库(即不是numpy),我想做的是将所有立即重复项加在一起。将两组1s和一组6s进行求和,结果应为(强调加在求和的位置):
[**3**,2,3,**2**,5,**12**,10]
这怎么实现?
答案 0 :(得分:3)
您可以使用itertools.groupby
对输出组求和:
from itertools import groupby
l = [1,1,1,2,3,1,1,5,6,6,10]
print([sum(g) for _, g in groupby(l)])
这将输出:
[3, 2, 3, 2, 5, 12, 10]
答案 1 :(得分:0)
遍历数据,如果相同则添加到临时列表,如果不相同则添加临时列表的总和-直到完成。
data = [1,1,1,2,3,1,1,5,6,6,10]
result = []
temp = [data[0]]
for d in data[1:]:
if temp[-1] == d: # same as temp currently collects?
temp.append(d)
else:
result.append(sum(temp))
temp = [d] # collect the new ones
result.append(sum(temp))
print(result) # [3, 2, 3, 2, 5, 12, 10]
使用itertools.groupby
较短,但需要导入。