Python:如何对列表中的元素进行分组并获取组的总和

时间:2018-03-11 01:07:30

标签: python list

我想按列表对数字进行分组,并计算每组的总和。基本上,它看起来像这样:

输入:

list = [0,1,1,0,0,0,1,0,1,1,1,1,0]

OUT(我想得到):

newList = [0,2,0,1,0,4,0]

如何在Python中实现这一点?

由于

3 个答案:

答案 0 :(得分:4)

您可以使用itertools.groupby

import itertools
s = [0,1,1,0,0,0,1,0,1,1,1,1,0]
final_s = [sum(b) for _, b in itertools.groupby(s)]

输出:

[0, 2, 0, 1, 0, 4, 0]

答案 1 :(得分:1)

这是一个循环的递归方法。

list1 = [0,1,1,0,0,0,1,0,1,1,1,1,0]

final_=[]
def recursive(lst):
  track = []
  if not lst:
    return 0
  else:
    for i,j in enumerate(lst):
      try:


        if lst[i]==lst[i+1]:

          track.append((lst[i],lst[i+1]))
        else:
          track.append(lst[i])
          final_.append(track)
          return recursive(lst[i+1:])
      except IndexError:
        final_.append([i])
recursive(list1)

print(list(map(lambda x:0 if 0 in x else len(x),final_)))

输出:

[0, 2, 0, 1, 0, 4, 0]

答案 2 :(得分:0)

试试这个:

ist = [0,1,1,0,0,0,1,0,1,1,1,1,0]
a=[[]]
[a[-1].append(e) if e==ist[c-1] else a.append([e]) for c,e in enumerate(ist)]
new_list=[sum(l) for l in a]

不需要库。输出:

[0, 2, 0, 1, 0, 4, 0]