У меня есть вложенный список, который выглядит примерно так: [[1, 0, 0, 1, 1], [1, 1, 1, 0, 1]]
. Как я могу суммировать числа (в этом случае одни) между разделителями (в этом случае нули), чтобы получить выход следующим образом: [[1,2], [3,1]]
?
EDIT. А как насчет ситуации, в которой список начинается с 0 и имеет больше групп из них? например, [0, 1, 0, 1, 1, 0, 1, 1]
→ [1, 2, 2]
Вы можете использовать groupby:
from itertools import groupby
data = [[1, 0, 0, 1, 1], [1, 1, 1, 0, 1]]
separator = 0
result = [[sum(v) for k, v in groupby(element, key=lambda x: x != separator) if k] for element in data]
print(result)
Выход
[[1, 2], [3, 1]]
a = [[1, 0, 0, 1, 1], [1, 1, 1, 0, 1]]
for i in a:
b = i.index(0)
e = [sum(i[:b]),sum(i[b:])]
print(e)
[1, 2]
[3, 1]
a = [[1, 0, 0, 1, 1], [1, 1, 1, 0, 1], [0,0,1,1,0,1]]
t = []
for j in a:
b = [i for i,x in enumerate(j) if x == 0]
for z in b:
t.append([sum(j[:z]), sum(j[z:])])
t = set([tuple(i) for i in t if 0 not in i])
print(t)
{(1, 2), (3, 1), (2, 1)}
a=[[1, 0, 0, 1, 1], [1, 1, 1, 0, 1]]
from itertools import groupby
for i in a:
temp=[]
for group,lis in groupby(i):
x=sum(lis)
if x:
temp.append(x)
print(temp)
Или в сжатой форме
[[sum(lis) for grp,lis in groupby(i) if grp !=0] for i in a]
[ [ 1, 0, 1, 0, 1] , ... ]
эта сумма в[1,1,1]
?