注册 登录
编程论坛 Python论坛

请大神解释一下这个函数的解析过程

liufashuai 发布于 2013-08-12 16:13, 1623 次点击
程序代码:
def flatten(nested):
    try:
        for sublist in nested:
            for element in flatten(sublist):
                yield element
    except TypeError:
        yield nested
1 回复
#2
liufashuai2013-08-12 16:33
我想应该这样的,希望大神给与指点:
程序代码:

def flatten(nested):
    try:
        for sublist in nested:
            print 'AAAAAA'+str(sublist)
            for element in flatten(sublist):
                print 'BBBBBB'+str(element)
                yield element
    except TypeError:
        print 'CCCCCC'+str(nested)
        yield nested


经过上面这个测试程序代码
测试[1,[2,3],[23,2]]和[[[[[4]]]]]
这两个例子,根据输出的调试语句可以大概窥出原理:
先是把第一个列表分离,然后分离每个分离后的列表,当为数字的时候就yield起来,这样递归加循环一层一层的剥去列表
1