Muchas veces necesitamos obtener la suma de no toda la lista sino solo una parte de ella y en intervalos regulares. Estos intervalos a veces se deciden estáticamente antes del recorrido, pero a veces, la restricción es más dinámica y, por lo tanto, necesitamos manejarla de una manera más compleja. Los criterios discutidos aquí son la suma de grupos distintos de cero. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Usar bucles
Esta tarea se puede realizar usando la forma de fuerza bruta usando los bucles. Simplemente recorremos la lista de cada elemento para probar que su elemento siguiente sea un valor distinto de cero y realizamos la suma una vez que encontramos que el siguiente valor es cero y lo agregamos en la lista de resultados.
# Python3 code to demonstrate # summation of non-zero groups # Using loops # initializing list test_list = [4, 9, 0, 0, 3, 4, 5, 0, 0, 4, 0] # printing original list print("The original list : " + str(test_list)) # using loops # summation of non-zero groups res = [] val = 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))
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]
Método #2: Usaritertools.groupby() + sum()
Esta tarea en particular también se puede realizar usando la función groupby para agrupar todos los valores distintos de cero y la función de suma se puede usar para realizar su suma.
# Python3 code to demonstrate # summation of 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] # printing original list print("The original list : " + str(test_list)) # using itertools.groupby() + sum() # summation of non-zero groups res = [sum(val) for keys, val 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))
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]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA