| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 在递归中使用迭代器 -> 正文阅读 |
|
[Python知识库]在递归中使用迭代器 |
今天下午想要复现一下学长的recursion file,想模仿源码里的精髓:迭代器 遇到了bug,花了一两个小时才解决。现总结如下: 如果不用递归器,可以这样实现:
即,深度优先遍历,满足要求时,将item_path补充到列表里,之后返回上一层。 使用迭代器可以用一个,遍历出来一个,省内存 替换为迭代器,最先想到的是,把 return 换成 yield,使用for循环调用迭代器函数
但是这样的程序跑到内嵌函数时,进不去,我百思不得其解 现在看,应该是因为迭代器函数不是一个函数,不是一个命令语句,它只是一个对象。 简单说就是,python程序一般遵循:动词+名词的结构,或者动词,比如:
这句话实际上是把1赋值给了a,是有动词的。 综上两点作出如下修改:
程序执行结果如下: 显然是返回了一个迭代器,不是一个str,其逻辑如下图所示: 就好比,本意是:
逻辑如下: 还有一种情况是学长源码里的:使用for调用迭代器:
这使用于多个文件的返回,源码里还配合isfile使用,这里是简化版,所以显得冗余。 昨天这篇文章写完后,遇到了bug,简单说就是,如果一个文件夹系统没有我们想要的文件,递归到最深一层文件夹时,会报错
或者是利用try… except语句处理异常:
会有如上报错,正常。 个人推荐第二种方法 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 15:59:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |