这是一个功能
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]
那么递归调用是如何发生的,我不清楚这件事。