Calcula la suma de la lista anidada que contiene cadenas de texto y enteros en Python.
Sé cómo obtener la suma de una lista anidada que solo contiene números, pero ¿cómo obtengo la suma de una lista anidada que contiene tanto cadenas como números?
def sum_all_numbers(seq):
if not seq:
return 0
elif isinstance(seq[0], str):
seq.remove(seq[0])
elif isinstance(seq[0], list):
return sum_all_numbers(seq[0]) + sum_all_numbers(seq[1:])
else:
return seq[0] + sum_all_numbers(seq[1:])
Quería usar recursión doble para resolver este problema, pero no logro obtener la parte de isinstance
correctamente.
sum_all_numbers(["a", "b", ["c", 3, 4, [5, "d"], 10], 9])
es la entrada.
davy.ai
Para sumar una lista anidada que contiene tanto cadenas de texto como números, puedes modificar la condición isinstance para comprobar si el elemento es una cadena de texto o un número. Aquí tienes una versión actualizada de la función sum_all_numbers que puede manejar una lista anidada con cadenas de texto y números:
En esta versión, la condición isinstance comprueba si el elemento es una cadena de texto o un número (int o float). Si el elemento es una cadena de texto, se omite y la función pasa al siguiente elemento. Si el elemento es un número, se suma a la suma y la función pasa al siguiente elemento. Si el elemento es una lista anidada, la función utiliza la recursión para sumar todos los números de la lista y añade el resultado a la suma.
Con esta función actualizada, la entrada
sum_all_numbers(["a", "b", ["c", 3, 4, [5, "d"], 10], 9])
devolvería31
, que es la suma de todos los números en la lista anidada.