Python栈与队列
一、栈
栈的特点:先进后出,后进先出;总结:先存的数据最后出栈,后存的数据最先出栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| stack = []
stack.append("A") print(f"stack = {stack}")
stack.append("B") print(f"stack = {stack}")
stack.append("C") print(f"stack = {stack}")
res1 = stack.pop() print(f"res1 = {res1}")
res2 = stack.pop() print(f"res2 = {res2}")
res3 = stack.pop() print(f"res3 = {res3}")
print(f"stack = {stack}")
|
栈模拟递归遍历目录(深度遍历)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import os def getAllDirDE(path): stack = [] stack.append(path) while len(stack) != 0: dirPath = stack.pop() dirList = os.listdir(dirPath) for fileName in dirList: fileAbsPath = os.path.join(dirPath, fileName) if os.path.isdir(fileAbsPath): print("目录:" + fileName) stack.append(fileAbsPath) else: print("文件:" + fileName)
getAllDirDE(r"D:\PyCharm\PyCharm 2018.3.7\file.py\文件处理\file")
|
二、队列
队列的特点:先进先出,后进后出;总结:先存的数据最先出列,后存的数据最后出列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import collections
queue = collections.deque() print(f"queue = {queue}", type(queue))
queue.append("A") print(f"queue = {queue}")
queue.append("B") print(f"queue = {queue}")
queue.append("C") print(f"queue = {queue}")
rts1 = queue.popleft() print(f"rts1 = {rts1}") print(f"queue = {queue}")
rts2 = queue.popleft() print(f"rts2 = {rts2}") print(f"queue = {queue}")
rts3 = queue.popleft() print(f"rts3 = {rts3}") print(f"queue = {queue}")
|
队列模拟递归遍历目录(广度遍历)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import os import collections
def getAllDirQU(path): queue = collections.deque() queue.append(path)
while len(queue) != 0: dirPath = queue.popleft() filesList = os.listdir(dirPath)
for fileName in filesList: fileAbsPath = os.path.join(dirPath, fileName)
if os.path.isdir(fileAbsPath): print("目录:" + fileName) queue.append(fileAbsPath) else: print("文件:" + fileName)
getAllDirQU(r"D:\PyCharm\PyCharm 2018.3.7\file.py\文件处理\file")
|