python之栈和队列
1. 栈
1.1 示例
#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: .py
@time: 2018-07-20 9:19
@desc: 先入后出
'''
queue = [] #入栈
print('************入栈*************')
queue.append('A')
print(queue)
queue.append('B')
print(queue)
queue.append('C')
print(queue) #出栈
print('************出栈*************')
queue.pop()
print(queue)
queue.pop()
print(queue)
queue.pop()
print(queue)
1.2 运行结果
2. 队列
2.1 示例
#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: 队列.py
@time: 2018-07-20 9:27
@desc: 先入先出
'''
import collections queue =collections.deque() #入栈
print('************入栈*************')
queue.append('A')
print(queue)
queue.append('B')
print(queue)
queue.append('C')
print(queue) #出栈
print('************出栈*************')
queue.popleft()
print(queue)
queue.popleft()
print(queue)
queue.popleft()
print(queue)
2.2 运行结果
3. 案例
3.1 递归遍历目录
3.1.1 概念
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。
当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。
所以递归要有两个要素,结束条件与递推关系
3.1.2 示例
#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: 递归遍历目录.py
@time: 2018-07-20 9:31
@desc:
'''
import os def getAllDir(path,sp=''):
#获取目录
filesList=os.listdir(path)
for fileName in filesList:
#文件的绝对路径
fileAbsPath = os.path.join(path,fileName)
#判断是否为文件
if os.path.isfile(fileAbsPath):
print(sp+ '普通文件:',fileAbsPath) else:
print(sp+ '目录:', fileAbsPath)
sp += ' '
getAllDir(fileAbsPath,sp) getAllDir(r'D:\testproject\core')
3.1.3 运行结果
3.2栈方式递归目录
3.2.1 示例
#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: 栈方式遍历目录.py
@time: 2018-07-20 10:16
@desc:
'''
import os def getAllDir(path,sp=''):
stack=[]
stack.append(path) #当栈为空时,目录遍历完
while len(stack) !=0:
#从栈取数据
fileDir=stack.pop()
filesList = os.listdir(fileDir) for fileName in filesList:
# 文件的绝对路径
fileAbsPath = os.path.join(fileDir, fileName)
# 判断是否为文件
if os.path.isfile(fileAbsPath):
print('普通文件:', fileName) else:
print('目录:', fileName)
stack.append(fileAbsPath) getAllDir(r'D:\testproject\core')
3.2.2 运行结果
3.3 队列方式递归目录
3.3.1 示例
#!/usr/bin/env python
# -*- codinfg:utf-8 -*-
'''
@author: Jeff LEE
@file: 队列方式遍历目录.py
@time: 2018-07-20 14:41
@desc:
'''
import os
import collections def getAllDir(path,sp=''):
queue =collections.deque()
queue.append(path) #当栈为空时,目录遍历完
while len(queue) !=0:
#从栈取数据
fileDir=queue.popleft()
filesList = os.listdir(fileDir) for fileName in filesList:
# 文件的绝对路径
fileAbsPath = os.path.join(fileDir, fileName)
# 判断是否为文件
if os.path.isfile(fileAbsPath):
print('普通文件:', fileName) else:
print('目录:', fileName)
queue.append(fileAbsPath) getAllDir(r'D:\testproject\core')
3.3.2 运行结果
python之栈和队列的更多相关文章
- 【DataStructure In Python】Python模拟栈和队列
用Python模拟栈和队列主要是利用List,当然也可以使用collection的deque.以下内容为栈: #! /usr/bin/env python # DataStructure Stack ...
- 使用python实现栈和队列
1.使用python实现栈: class stack(): def __init__(self): self.stack = [] def empty(self): return self.stack ...
- Python实现栈、队列
目录 1. 栈的Python实现 1.1 以列表的形式简单实现栈 1.2 以单链表形式实现栈 2. 队列的Python实现 2.1 以列表实现简单队列 2.2 以单链表形式实现队列 本文将使用py ...
- python之栈与队列
这个在官网中list支持,有实现. 补充一下栈,队列的特性: 1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIF ...
- Python 实现栈与队列
#基于Python2.7 #基于顺序表实现 #发现用Python写题时,没有像写C++时方便的STL可用,不过查阅资料之后发现用class实现也很简洁,不过效率应该不是很高 Python实现栈并使用: ...
- python之 栈与队列
忍不住想报一句粗口"卧槽"这尼玛python的数据结构也太特么方便了吧 想到当初学c语言的数据结构的时候,真的是一笔一划都要自己写出来,这python尼玛直接一个模块就ok 真的是 ...
- Python数据结构——栈、队列的实现(二)
1. 一个列表实现两个栈 class Twostacks(object): def __init__(self): self.stack=[] self.a_size=0 self.b_size=0 ...
- Python数据结构——栈、队列的实现(一)
1. 栈 栈(Stack)是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,称为栈的顶(top).栈的基本操作有PUSH(入栈)和POP(出栈).栈又被称为LIFO(后入先出)表. 1.1 ...
- Python的栈和队列实现
栈 class Node: def __init__(self, data=None): self.next = None self.data = data class Stack: def __in ...
随机推荐
- mybatis初识
mybatis采用弱连接,在一定程度上集中管理了sql的语句编写,又实现了自动映射bean. 此处以最基础的mybatis连接为例: 引入jar包: mybatis-3.4.5.jar ojdbc-6 ...
- leetcode题解 Generate Parentheses
原文链接:https://leetcode.com/problems/generate-parentheses 给出数字n,求n对括号组成的合法字符串. 刚做出来,敲完代码,修改了一次,然后提交,ac ...
- [原]vue - webapp 返回无效 解决方案
- java split函数结尾空字符串被丢弃的问题
参考: http://yinny.iteye.com/blog/1750210 http://www.xuebuyuan.com/1692988.html java中的split函数用于将字符串分割为 ...
- foreman自动化工具安装使用
简单的安装指导在官网上 官网地址为:https://theforeman.org/ 点击get started 找到 Installation 选择直接的发行版按照步骤一个一个来 需要注意的是,主机名 ...
- 译:SQL Server的Missing index DMV的 bug可能会使你失去理智---慎重看待缺失索引DMV中的信息
注: 本文译自https://www.sqlskills.com/blogs/paul/missing-index-dmvs-bug-that-could-cost-your-sanity/ 原文作者 ...
- ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画
ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画 概述 计划时间:第4天下午 目的:城市规划容积率计算和建筑三维景观动画 教程: pdf page578 数据:实验数据\Chp13 ...
- 历届试题 小数第n位-(同余公式+快速幂)
问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...
- 初始C语言中的指针(翁凯男神MOOC)
运算符 & ● scanf("%d",&i); ●获得变量的地址,它的操作数必须是变量 ● int i; printf("%x",& ...
- Linux部署项目
1 安装jdk 第一步:获取Linux系统中jdk安装包和tomcat安装包(后面要用,所以上传两个) 第二步:使用secureCRT客户端工具连到服务器 第三步:使用命令创建一个目录,作为软件的安装 ...