Подсчет всех элементов в списке произвольно вложенных списков без рекурсии

Я только что узнал о рекурсии в Python и выполнил задания, одним из которых был подсчет всех элементов в списке произвольно вложенных списков. Я искал этот сайт, и найденные ответы, кажется, используют рекурсивные вызовы. Поскольку было сказано, что все, что может быть выражено рекурсивно, может быть выражено итеративно, а итерация предпочтительнее в Python, как это можно сделать без рекурсии или импортированных модулей в Python 2.6 (в качестве учебного упражнения)? (Сам вложенный список будет считаться элементом, как и его содержимое.) Например:

>>> 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

Как это будет записано с помощью итерации?

14
задан Peter Mortensen 14 May 2012 в 18:01
поделиться