我刚学习了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
如何使用迭代来编写这个代码?
element_count([1, [1, 2, [3, 4]]])
不应该是5吗?为什么你把子列表对象本身也算作元素呢? - Karl Knechtel