Python實(shí)現(xiàn)的棧、隊(duì)列、文件目錄遍歷操作示例
本文實(shí)例講述了Python實(shí)現(xiàn)的棧、隊(duì)列、文件目錄遍歷操作。分享給大家供大家參考,具體如下:
一、 棧與隊(duì)列
1、 棧 stack
特點(diǎn):先進(jìn)先出[可以抽象成竹筒中的豆子,先進(jìn)去的后出來(lái)] 后來(lái)者居上
mystack = [] #壓棧[向棧中存數(shù)據(jù)] mystack.append(1) print(mystack) mystack.append(2) print(mystack) mystack.append(3) print(mystack) #出棧[從棧中取數(shù)據(jù)] mystack.pop() print(mystack) mystack.pop() print(mystack)
2、 隊(duì)列 queue
特點(diǎn): 先進(jìn)先出[可以抽象成一個(gè)平放的水管]
#導(dǎo)入數(shù)據(jù)結(jié)構(gòu)的集合 import collections queue = collections.deque([1, 2, 3, 4, 5]) print(queue) #入隊(duì)[存數(shù)據(jù)] queue.append(8) print(queue) queue.append(9) print(queue) #取數(shù)據(jù) 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)
# 遍歷當(dāng)前目錄
diguigetAllDir(os.getcwd(),0)
2、 棧模擬遞歸遍歷目錄
也稱(chēng)為深度遍歷
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() #縮進(jìn)空格個(gè)數(shù)出棧
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)) #文件名拼接成相對(duì)路徑后入棧
# 遍歷當(dāng)前目錄
stackGetAllDir(os.getcwd())
3、 隊(duì)列模擬遞歸遍歷目錄
也被稱(chēng)為廣度遍歷
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)
# 遍歷當(dāng)前目錄
queueGetAllDir(os.getcwd())
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
pytorch實(shí)現(xiàn)ResNet結(jié)構(gòu)的實(shí)例代碼
ResNet網(wǎng)絡(luò)可以達(dá)到很深的層數(shù)的原因就是不斷的堆疊殘差結(jié)構(gòu)而來(lái)的,接下來(lái)通過(guò)本文給大家介紹pytorch實(shí)現(xiàn)ResNet結(jié)構(gòu)的示例代碼,喜歡的朋友跟隨小編一起看看吧2021-05-05
python通過(guò)zlib實(shí)現(xiàn)壓縮與解壓字符串的方法
這篇文章主要介紹了python通過(guò)zlib實(shí)現(xiàn)壓縮與解壓字符串的方法,較為詳細(xì)的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對(duì)文件進(jìn)行壓縮解壓的方法,需要的朋友可以參考下2014-11-11
python中matplotlib的顏色以及形狀實(shí)例詳解
在Python中經(jīng)常使用matplotlib畫(huà)圖,為了讓圖像顯示的更加好看,經(jīng)常需要對(duì)圖表點(diǎn)、線(xiàn)形狀及顏色進(jìn)行設(shè)置,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib的顏色以及形狀的相關(guān)資料,需要的朋友可以參考下2022-01-01
python 模擬創(chuàng)建seafile 目錄操作示例
這篇文章主要介紹了python 模擬創(chuàng)建seafile 目錄操作,結(jié)合實(shí)例形式詳細(xì)分析了Python模擬創(chuàng)建seafile 目錄相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python 數(shù)據(jù)的累加與統(tǒng)計(jì)的示例代碼
這篇文章主要介紹了Python 數(shù)據(jù)的累加與統(tǒng)計(jì)的示例代碼,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
使用python操作lmdb對(duì)數(shù)據(jù)讀取的實(shí)例
這篇文章主要介紹了使用python操作lmdb對(duì)數(shù)據(jù)讀取的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12

