Acabo de enterarme de la recursión en Python y he completado las asignaciones, una de las cuales era contar todos los elementos dentro de una lista de listas anidadas arbitrariamente. He buscado este sitio y las respuestas encontradas parecen usar llamadas recursivas. Dado que se ha enseñado que todo lo que podría expresarse recursivamente podría expresarse de forma iterativa, y se prefiere la iteración en Python, ¿cómo se lograría esto sin recursión o módulos importados en Python 2.6 (como ejercicio de aprendizaje)? (Una lista anidada en sí sería considerado como un elemento, al igual que su contenido.) Por ejemplo:Cuenta todos los elementos en la lista de lista anidada arbitraria sin recursión
>>> def element_count(p):
... count = 0
... for entry in p:
... count += 1
... if isinstance(entry, list):
... count += element_count(entry)
... return count
>>> print element_count([1, [], 3])
3
>>> print element_count([1, [1, 2, [3, 4]]])
7
>>> print element_count([[[[[[[[1, 2, 3]]]]]]]])
10
¿Cómo se escriba esto usando iteración?
Iteración es preferible para cosas como bucles simples. Para problemas inherentemente recursivos como este, la recursión es mejor. – interjay
Esto fue más un ejercicio de aprendizaje que una declaración de principios. Y parece ser más fácil expresar una solución recursivamente. Sin embargo, si la cantidad de llamadas recursivas necesarias se desconoce de antemano, ¿no sería práctico y necesario este ejercicio? –
¿No debería 'element_count ([1, [1, 2, [3, 4]]])' ser 5? ¿Por qué estás contando los objetos de la sublista como elementos? –