python 高级部分精华--那些书本不会告诉你的坑

2021-07-10 03:05

阅读:739

标签:else   递归算法   att   get   dir   需要   instance   显示   print   

递归目录生成器方式, else 里的 tmp 显示获取 yield 不可缺少 , 递归算法中若要使用生成器,需要在生成器的原函数(首次调用)显式得到所有yield值

def get_file_recur(path):
    children = os.listdir(path)
    for child in children:
        qualified_child = os.path.join(path,child)
        if os.path.isfile(qualified_child):
            yield qualified_child
        else:
            tmp = get_file_recur(qualified_child)
            for item in tmp:
                yield item

for file in get_file_recur('/home/xxx/xxx/Frank Li'):
    print(file)

参考资料来源,如下 flattern list

def flattern(lst):
    for item in lst:
        if isinstance(item,list):
            inner_list = flattern(item)
            for i in inner_list:
                yield i
        else:
            yield item

l=[1,2,3,4,5,[6],[7,8,[9,[10]]]]
lst=flattern(l)
print(list(lst))

python 高级部分精华--那些书本不会告诉你的坑

标签:else   递归算法   att   get   dir   需要   instance   显示   print   

原文地址:https://www.cnblogs.com/Frank99/p/9563980.html


评论


亲,登录后才可以留言!