Python | Suma de columnas en listas de tamaño desigual

La lista de listas habitual, a diferencia de Matrix tipo C convencional, puede permitir la lista anidada de listas con longitudes variables, y cuando requerimos la suma de sus columnas, la longitud desigual de las filas puede hacer que algunos elementos de ese elemento estén ausentes y si no se maneja correctamente, puede generar una excepción. Analicemos ciertas formas en las que este problema se puede realizar sin errores.

Método n.º 1: usar sum() + filter() + map()+ comprensión de listas
La combinación de las tres funciones anteriores combinadas con la comprensión de listas puede ayudarnos a realizar esta tarea en particular, la función de suma ayuda a realizar la suma, el filtro nos permite verificar los elementos presentes y todas las filas se combinan usando la función de mapa. Funciona solo con python 2

# Python code to demonstrate  
# Column summation in uneven sized lists
# using sum() + filter() + map() + list comprehension
  
# initializing list of lists
test_list = [[1, 5, 3], [4], [9, 8]]
  
# printing original list 
print ("The original list is : " + str(test_list))
  
# using sum() + filter() + map() + list comprehension
# Column summation in uneven sized lists
res = [sum(filter(None, j)) for j in map(None, *test_list)]
  
# printing result
print ("The summation of columns is : " + str(res))
Producción :

The original list is : [[1, 5, 3], [4], [9, 8]]
The summation of columns is : [14, 13, 3]

Método n.º 2: Uso de la comprensión de listas +sum() + zip_longest()
Si no se desea jugar con los valores Ninguno, se puede optar por este método para resolver este problema en particular. La función zip_longest ayuda a llenar la columna no presente con 0 para que no tenga que manejar el vacío de elementos no presentes.

# Python3 code to demonstrate  
# Column summation in uneven sized lists
# using list comprehension + sum() + zip_longest()
import itertools
  
# initializing list of lists
test_list = [[1, 5, 3], [4], [9, 8]]
  
# printing original list 
print ("The original list is : " + str(test_list))
  
# using list comprehension + sum() + zip_longest()
# Column summation in uneven sized lists
res = [sum(i) for i in itertools.zip_longest(*test_list, fillvalue = 0)]
  
# printing result
print ("The summation of columns is : " + str(res))
Producción :

The original list is : [[1, 5, 3], [4], [9, 8]]
The summation of columns is : [14, 13, 3]

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *