一、 栈与队列

关注公众号“轻松学编程”了解更多。

1、 栈 stack

特点:先进先出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上

mystack = []
#压栈[向栈中存数据]
mystack.append(1)
print(mystack)
mystack.append(2)
print(mystack)
mystack.append(3)
print(mystack) #出栈[从栈中取数据]
mystack.pop()
print(mystack)
mystack.pop()
print(mystack)

2、 队列 queue

特点: 先进先出[可以抽象成一个平放的水管]

#导入数据结构的集合
import collections
queue = collections.deque([1, 2, 3, 4, 5])
print(queue) #入队[存数据]
queue.append(8)
print(queue)
queue.append(9)
print(queue) #取数据
print(queue.popleft())
print(queue)

二、 目录遍历

1、 递归遍历目录

import os
def diguigetAllDir(path,suojin):
# 如果文件夹中只有文件则返回
if os.path.isfile(path):
return
# 如果为空文件夹则返回
list1 = os.listdir(path)
if len(list1) == 0:
return
# 遍历list1列表
for item in list1:
print(' '*suojin,'%s'%item)
path1 = os.path.join(path,item)
if os.path.isdir(path1):
diguigetAllDir(path1, suojin + 4)
# 遍历当前目录
diguigetAllDir(os.getcwd(),0)

2、 栈模拟递归遍历目录

也称为深度遍历

import os

def stackGetAllDir(path):
if not os.listdir(path):
return
liststack = [path]
listsuojin = [0]
print(liststack)
while len(liststack) != 0:
path = liststack.pop() #路径出栈
suojin = listsuojin.pop() #缩进空格个数出栈
print(' ' * suojin, os.path.basename(path))
if os.path.isdir(path):
for i in os.listdir(path): #遍历路径下的全部文件
listsuojin.append(suojin +4)
liststack.append(os.path.join(path,i)) #文件名拼接成相对路径后入栈
# 遍历当前目录
stackGetAllDir(os.getcwd())

3、 队列模拟递归遍历目录

也被称为广度遍历

import os
import collections def queueGetAllDir(path=" "):
if not os.listdir(path):
return
queue = collections.deque()
queue.append(path) while len(queue) != 0:
filePath = queue.popleft()
fileList = os.listdir(filePath) #遍历filePath路径下的目录
for filename in fileList:
absFilePath = os.path.join(filePath,filename) #路径拼接
if os.path.isdir(absFilePath):
print("目录:",filename)
queue.append(absFilePath)
else:
print("文件:",filename)
# 遍历当前目录
queueGetAllDir(os.getcwd())

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

python栈、队列、文件目录遍历的更多相关文章

  1. python 文件目录遍历

    递归遍历目录和文件 import os path = r'F:\PycharmProjects\basic gram\作业和习题\test' def getAllFileAndDir(path): # ...

  2. python数据结构-数组/列表/栈/队列及实现

    首先 我们要分清楚一些概念和他们之间的关系 数组(array)  表(list)  链表(linked list)  数组链表(array list)   队列(queue)  栈(stack) li ...

  3. java 集合 Connection 栈 队列 及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  4. Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  5. java面向对象的栈 队列 优先级队列的比较

    栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...

  6. python OS 模块 文件目录操作

    Python OS 模块 文件目录操作 os模块中包含了一系列文件操作的函数,这里介绍的是一些在Linux平台上应用的文件操作函数.由于Linux是C写的,低层的libc库和系统调用的接口都是C AP ...

  7. Python 栈(stack)

    Python 栈(stack) 栈(stack)又名堆栈,它是一种运算受限的线性表 栈只能在一端进行插入和删除操作,它按照先进后出(FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶 ...

  8. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  9. 分布式机器学习:如何快速从Python栈过渡到Scala栈

    首先介绍下我的情况和需求,如果你跟我类似,那么这篇文章将很有帮助: 我之前的技术栈主要是Java.Python,机器学习方面主要用到是pandas.numpy.sklearn.scipy.matplo ...

随机推荐

  1. Python练习题 043:Project Euler 015:方格路径

    本题来自 Project Euler 第15题:https://projecteuler.net/problem=15 ''' Project Euler: Problem 15: Lattice p ...

  2. Python练习题 033:Project Euler 005:最小公倍数

    本题来自 Project Euler 第5题:https://projecteuler.net/problem=5 # Project Euler: Problem 5: Smallest multi ...

  3. Linux知识点笔记

    Linux启动脚本 rcS文件,rcS文件位于系统根目录下的"/etc/init.d"下.  rcS文件本质是一个bash shell脚本,因此遵循bash脚本的语法规则. [1] ...

  4. 【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

    实时监控股市重大公告的Python爬虫小技巧 精力有限的我们,如何更加有效率地监控信息? 很多时候特别是交易时,我们需要想办法监控一些信息,比如股市的公告.如果现有的软件没有办法实现我们的需求,那么就 ...

  5. 00 在Windows环境中开发Cordova项目的准备工作

    1.开发环境准备:     安装nodejs     安装Cordova     安装Visual Studio Code     安装nodejs步骤:     通过nodejs官网(https:/ ...

  6. 03 sublime text3下配置Java的编译运行环境

    参考如下文章,加入了自己的干货: https://blog.csdn.net/qq_38295511/article/details/81140069 https://blog.csdn.net/qq ...

  7. 【题解】[ZJOI2009]狼和羊的故事

    题目戳我 \(\text{Solution:}\) 显然思路,把所有羊看成一个源点,所有狼看成一个汇点,格子之间连容量为\(1\)的边,直接跑最小割. 技巧: 注意到篱笆不能把羊给割掉,狼同理.所以, ...

  8. 【题解】[AHOI2013]作业

    Link 题目大意:\(n\)个数,\(m\)个询问,每次四个参数,\(l,r,a,b\),问区间\([l,r]\)中出现过的,数值在\([a,b]\)区间中的数的个数以及区间\([l,r]\)中数值 ...

  9. MySql查询语句中的变量使用

    前言 今日在LeetCode刷MySql的题,遇到一题,题目到没什么,解答完了之后习惯去看此题的题解,有位大佬的思路让博主感觉很惊艳,至此,特地记录学习一下. 题目 解答 乍一看题目也没啥,分数排名, ...

  10. ubuntu20 使用命令安装 rabbitmq

    安装 rabbitmq sudo apt-get install erlang-nox -y sudo apt-get update sudo apt-get install rabbitmq-ser ...