Python自学之路:递归、栈和队列遍历目录
递归调用的概念:一个函数调用了自身,称为递归调用
递归函数的概念:一个能够被自身调用的函数称为递归函数
递归一般执行的是循环逻辑
编写递归函数的方法:
1、找出临界条件,比如最小值,最大值等等
2、找出这一次和上一次的关系
3、假设当前函数已经能用,调用自身计算上一次结果,再求出本次的结果
一个简单的递归函数:
def sum(n):
if n==1:#这个就是临街条件
return 1
else:
return n + sum(n-1) #这一次和上一次的关系
栈:先进后出的方式存取数据
队列:先进先出的方式存取数据
用列表模仿栈:
#定义一个列表
stack =[]
#压栈
stack.append(‘A’)
#出栈
data = stack.pop()
#队列操作
import collections
#创建一个队列
queue = collections. deque()
#进队
queue.append(‘A’)
#出队
data = queue.popleft()
#递归的方式遍历目录
import os
def getAllDir(path):
#获取当前目录下的所有文件
filesList = os.listdir(path)
#处理每一个文件
for fileName in filesList:
#判断是否是路径(绝对路径)
absPath = os.path.join(path, fileName)
if os.path.isdir(absPath):
#是路径就调用自身
getAllDir(absPath)
else:
#作为普通文件处理
#用栈的方式遍历目录(深度遍历)
import os
def getAllDirDE(path):
#定义一个空栈
stack = []
#把当前目录压栈
stack.append(path)
#处理栈,当栈为空就结束程序
while len(stack) !=0:
#出栈
dirPath = stack.pop()
#目录下所有文件
fileList = os.listdir(dirPath)
#处理每一个文件
for fileName in fileList:
#获取此文件的绝对路径
fileAbsPath = os.path.join(dirPath, fileName)
#判断是否为目录
if os.path.isdir(fileAbsPath):
#压栈
stack.append(fileAbsPath)
else:
#作为普通文件处理
#队列方式遍历目录(广度遍历)
import os
import collections
def getAllDirQU(path):
#创建一个队列
queue = collections.deque()
#进队
queue.append(path)
while len(queue) !=0: #出队 dirPath = queue.popleft() #目录下所有文件 fileList = os.listdir(dirPath) #处理每一个文件 for fileName in fileList: #获取绝对路径 fileAbsPath = os.path.join(dirPath, fileName) #判断是否是目录 if os.path.isdir(fileAbsPath): queue.append(fileAbsPath) else: #作为普通文件处理阅读更多
- python三种遍历目录的方法递归 栈 和队列
- Python递归遍历目录下所有文件
- Python自学之路第八步——遍历字典&嵌套
- python实现递归遍历目录(linux下测试通过)
- Python Tricks(九)—— 递归遍历目录下所有文件
- Python自学之路第五步——遍历列表以及创建数值列表
- python实现目录递归遍历
- python小例子之1 -- 递归遍历目录
- python使用递归实现目录遍历
- php队列方式和递归方式遍历目录文件及子目录
- Python学习笔记之遍历目录文件(递归和walk())
- Python利用递归和walk()遍历目录文件的方法示例
- Python:递归遍历目录,统计目录大小,并以列表的形式返回所有py文件
- python.递归遍历指定的目录
- python下递归遍历目录和文件
- python - 自定义一个递归函数用于递归遍历指定目录下的所有文件
- 03-python文件(文件夹复制练习)------使用递归遍历,广度遍历(队列),深度遍历(栈)
- 递归,队列,栈遍历目录
- python下递归遍历目录和文件
- python小例子之1 -- 递归遍历目录