class Solution:def flatten(self, nested):try:for sublist in nested:for element in self.flatten(sublist):print(element)yield elementexcept TypeError:yield nestedprint(list(Solution().flatten([[[[1]]], 2, 3, 4, 8])))
Note
每次到 yield 时候函数会暂停,相当于 return 但不会终止,会被再次唤醒
第四次函数走flatten except 生成一个被 前边递归产生的函数消费,到最后一个flatten才轮到Solution.flatten消费,
消费完成后再一层一层从外到里检查内层 for 循环是否返程
