Python | Suma de enteros en lista heterogénea

A veces, mientras trabajamos con Python, podemos encontrarnos con un problema en el que necesitamos encontrar la suma de la lista. Este problema es más fácil de resolver. Pero esto puede volverse complejo en caso de que tengamos una combinación de tipos de datos que lo acompañen. Analicemos ciertas formas en que se puede realizar esta tarea. 

Método n.º 1: uso de la conversión de tipos + manejo de excepciones 
Podemos emplear un método de fuerza bruta para escribir la conversión de tipos de cada elemento y capturar la excepción si ocurre alguna. Esto puede garantizar que solo se agreguen números enteros a la suma y, por lo tanto, puede resolver el problema.

Python3

# Python3 code to demonstrate working of
# Summation of integers in heterogeneous list
# using type caste and exception handling
  
# initializing list
test_list = [5, 6, "gfg", 8, (5, 7), 'is', 9]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Summation of integers in heterogeneous list
# using type caste and exception handling
res = 0
for ele in test_list:
    try:
        res += int(ele)
    except :
        pass
  
# printing result 
print("Summation of integers in list : " + str(res))
Producción : 

The original list is : [5, 6, 'gfg', 8, (5, 7), 'is', 9]
Summation of integers in list : 28

 

Método #2: Usar sum() + isinstance() 
Este problema también se puede resolver usando la función incorporada de sum() y también admite el filtro de instancia usando isinstance() que se puede alimentar con un número entero y, por lo tanto, resolver el problema.

Python3

# Python3 code to demonstrate working of
# Summation of integers in heterogeneous list
# using sum() + isinstance()
  
# initializing list
test_list = [5, 6, "gfg", 8, (5, 7), 'is', 9]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Summation of integers in heterogeneous list
# using sum() + isinstance()
res = sum(filter(lambda i: isinstance(i, int), test_list))
  
# printing result 
print("Summation of integers in list : " + str(res))
Producción : 

The original list is : [5, 6, 'gfg', 8, (5, 7), 'is', 9]
Summation of integers in list : 28

 

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 *