码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-08-31 10:52:40      阅读:148      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!