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、 棧模擬遞歸遍歷目錄
也稱為深度遍歷
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ì)列模擬遞歸遍歷目錄
也被稱為廣度遍歷
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)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python graphlib庫(kù)輕松創(chuàng)建操作分析圖形對(duì)象
Python中的graphlib庫(kù)是一個(gè)功能強(qiáng)大且易于使用的工具,graphlib提供了許多功能,可以幫助您創(chuàng)建、操作和分析圖形對(duì)象,本文將介紹graphlib庫(kù)的主要用法,并提供一些示例代碼和輸出來(lái)幫助您入門2024-01-01Python中利用原始套接字進(jìn)行網(wǎng)絡(luò)編程的示例
這篇文章主要介紹了Python中利用原始套接字進(jìn)行網(wǎng)絡(luò)編程的示例,使用sock_raw接受和發(fā)送數(shù)據(jù)包可以避開網(wǎng)絡(luò)協(xié)議的諸多限制,需要的朋友可以參考下2015-05-05利用python 更新ssh 遠(yuǎn)程代碼 操作遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了利用python 更新ssh 遠(yuǎn)程代碼 操作遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-02-02Python操作Redis數(shù)據(jù)庫(kù)的詳細(xì)教程與應(yīng)用實(shí)戰(zhàn)
Redis是一個(gè)高性能的鍵值存儲(chǔ)數(shù)據(jù)庫(kù),支持多種類型的數(shù)據(jù)結(jié)構(gòu),如字符串、哈希表、列表、集合和有序集合等,在Python中,通過(guò)redis-py庫(kù)可以方便地操作Redis數(shù)據(jù)庫(kù),本文將詳細(xì)介紹如何在Python代碼中操作Redis,需要的朋友可以參考下2024-08-08Python開發(fā)必知必會(huì)標(biāo)識(shí)符UUID全面使用指南
在Python編程中,UUID(通用唯一標(biāo)識(shí)符)是一個(gè)非常有用的工具,用于生成唯一的標(biāo)識(shí)符,本文將深入探討Python中UUID的用法、不同版本的UUID、以及如何在實(shí)際應(yīng)用中充分利用UUID的優(yōu)勢(shì)2023-12-12