我想按列表对数字进行分组,并计算每组的总和。基本上,它看起来像这样:
输入:
list = [0,1,1,0,0,0,1,0,1,1,1,1,0]
OUT(我想得到):
newList = [0,2,0,1,0,4,0]
如何在Python中实现这一点?
由于
答案 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]