python递归生成器

def fat(nest):
    try :
        try:nest+''
        except TypeError:pass
        else:raise TypeError
        for sublist in nest:
            for element in fat(sublist):
                yield element
    except TypeError:
        yield nest
            
nest=[['tee'],[1,2,[3]]]
for num in fat(nest):
    print num

试着将一个传入的对象和一个字符串拼接,看看会不会出现TypeError,这是检查一个对象是不是似类于字符串的最简单,最快速的方法

如果表达式nest+''引发了一个TypeError,它就会被忽略,然而如果没有引发TypeError,那么内嵌的else语句就会引发一个它自己的TypeError异常,这就会按照原来的样子生成类似于字符串的对象

输出结果

>>> 
tee
1
2
3
>>> 


你可能感兴趣的:(C/C++/Python)