溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實現的棧、隊列、文件目錄遍歷操作示例

發布時間:2020-10-23 15:34:58 來源:腳本之家 閱讀:191 作者:微信1257309054 欄目:開發技術

本文實例講述了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 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)
    path2 = os.path.join(path,item)
    if os.path.isdir(path2):
      diguigetAllDir(path2, 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())

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女