Python | Summation of nonzero groups



Method # 1: Using Loops

This task can be accomplished using the brute force method using loops. We simply loop through each element of the list to check that its subsequent element has a non-zero value, and perform the summation as soon as we find the next value equal to zero, and add it to the list of results.

# Python3 demo code
# sum non-zero groups
# Using loops

 
# initializing list

test_list = [ 4 , 9 , 0 , 0 , 3 , 4 , 5 , 0 , 0 , 4 , 0 ]

 
# printing the original list

print ( "The original list: " + str (test_list))

 
# using loops
# sum non-zero groups

res = []

va l = 0

for ele in test_list:

if ele = = 0 :

if val! = 0 :

res.append (val)

  val = 0

else :

  val + = ele

 
# print result

print ( "The non-zero group summation of list is: " + str (res))

Output:

 The original list: [4, 9, 0 , 0, 3, 4, 5, 0, 0, 4, 0] The non-zero group summation of list is: [13, 12, 4] 

Method No. 2: Using itertools.groupby () + sum ()

This particular task can also be done using the groupby function to group all non-zero values, and the sum function can be used to summarize them.

# Python3 demo code
# summing non-zero groups
# Using itertools.groupby () + sum ()

from itertools import groupby

 
# initializing list

test_list = [ 4 , 9 , 0 , 0 , 3 , 4 , 5 , 0 , 0 , 4 , 0 ]

 
# print the original list

print ( "The original list: " + str (test_list))

 
# using itertools.groupby () + sum ()
# sum non-zero groups

res = [ sum (val) for keys, v al in groupby (test_list,

key = lambda x: x! = 0 ) if keys! = 0 ]

 
# print result

print ( "The non-zero group summation of list is: " + str (res))

Output:

 The original list: [ 4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0] The non-zero group summation of list is: [13, 12, 4]