Python基礎之棧與佇列及遞迴目錄
棧與佇列
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 getall(path, treeshow):
filelist = os.listdir(path)
treeshow += " "
for filename in filelist:
#拼接絕對路徑
filepath = os.path.join(path, filename)
if os.path.isdir(filepath):
print(treeshow,"目錄",filename)
getall(filepath, treeshow)
else:
print(treeshow,"檔案",filename)
getall(r"d:\python\test","")
2 棧模擬遞迴遍歷目錄
也稱為深度遍歷
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):
#是目錄就壓棧
print("目錄:", fileName)
stack.append(fileAbsPath)
else:
#列印普通檔案
print("普通檔案:", fileName)
getAllDirED(r"/Users/zhangjiao/PycharmProjects/teaching")
3 佇列模擬遞迴遍歷目錄
也被稱為廣度遍歷
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):
print("目錄:", fileName)
queue.append(fileAbsPath)
else:
print("普通檔案:", fileName)
getAllDirQU(r"/Users/zhangjiao/PycharmProjects/teaching")
相關文章
- Python自學之路:遞迴、棧和佇列遍歷目錄Python遞迴佇列
- Python零基礎學習筆記(三十八)——遞迴方法、棧、佇列模擬遍歷目錄Python筆記遞迴佇列
- 棧與佇列理論基礎佇列
- 資料結構基礎學習之(棧和佇列)資料結構佇列
- 惡補基礎知識:Java 棧與佇列詳解Java佇列
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- java 棧與佇列Java佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- 迴歸Java基礎:LinkedBlockingQueue阻塞佇列解析JavaBloC佇列
- 棧與佇列簡介佇列
- 6.13-棧與佇列佇列
- python基礎(補充):遞迴的深度Python遞迴
- Python中堆、棧、佇列之間的區別Python佇列
- 基礎資料結構之遞迴資料結構遞迴
- 原始碼|jdk原始碼之棧、佇列及ArrayDeque分析原始碼JDK佇列
- day11 棧與佇列佇列
- Linux 基礎-檔案及目錄管理Linux
- 棧、佇列佇列
- 棧-佇列佇列
- 佇列,棧佇列
- 聊聊陣列與連結串列,棧與佇列陣列佇列
- jmeter基礎之目錄結構解析及配置檔案修改JMeter
- 描述高頻題之佇列&棧佇列
- 題目9:用兩個棧實現佇列佇列
- [java基礎]之JDK目錄介紹JavaJDK
- 資料結構-棧與佇列資料結構佇列
- 線性結構 佇列與棧佇列
- “棧”與“佇列”呢點事(三)佇列
- “棧”與“佇列”呢點事(一)佇列
- 用JavaScript實現棧與佇列JavaScript佇列
- 基於迴圈佇列的BFS的原理及實現佇列
- Python基礎學習之迴圈Python
- 反轉連結串列(遞迴與棧)遞迴
- 棧和佇列佇列
- 佇列 和 迴圈佇列佇列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- 《演算法筆記二》連結串列、棧、佇列、遞迴、雜湊表、順序表演算法筆記佇列遞迴
- 演算法之美:棧和佇列演算法佇列