【发布时间】:2013-06-07 12:01:12
【问题描述】:
这是一个函数
def flatten(nested):
try:
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
和nested=[[1, 2], [3, 4], [5]]
我想了解的是第一次调用 flatten 函数的时间
整个序列([[1, 2], [3, 4], [5]])传递给它,下面是我理解的执行顺序
flatten([[1, 2], [3, 4], [5]]):
try:
for sublist in ([[1, 2], [3, 4], [5]]):
for element in flatten(sublist):
这里调用了 flatten,它从嵌套 [0] 的列表元素 [1,2] 开始
现在在这个递归调用中进行展平,它按照以下方式进行
flatten([1, 2]):
try:
for sublist in ([1, 2]):
for element in flatten(sublist):
但在最后一种情况下 [5] 发生了什么
for sublist in ([5]):
for element in flatten(sublist):
现在在递归调用中,flatten 是如何工作的?我也不清楚是否,
输入不是一个定义明确的列表输入在列表之后[[[1],2],3,4,[5,[6,7]],8]
那么递归调用是怎么发生的,这个东西我不是很清楚。
【问题讨论】:
-
你可以看到 try...except 块为 if(type(nested) == list ) ...else #type(nested) == integer
标签: python python-2.7 recursion generator