ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python第三十二课——队列

2019-02-28 21:42:51  阅读:206  来源: 互联网

标签:遍历 python queue 队列 file print path 第三十二



队列:满足特点 --> 先进先出,类似于我们生活中的买票、安检

【注意】

对于队列而言:python中有为其封装特定的函数,在collections模块中的deque函数就可以获取一个队列对象;

操作步骤:

步骤一:导入collections模块

步骤二:collections.deque() --> 返回队列对象

步骤三:使用队列对象调用其存和取的函数,完成需求


演示队列存取数据的特点:先进先出
import collections

#获取队列对象:deque()
queue=collections.deque()
print(queue,type(queue))

#向队列中逾加数据:进队操作
queue.append('A')
print(queue)

queue.append('B')
print(queue)

queue.append('C')
print(queue)


#将队列中的数据弹出:出队操作
obj=queue.popleft()
print('弹出:'+obj)

obj=queue.popleft()
print('弹出:'+obj)

obj=queue.popleft()
print('弹出:'+obj)


'''
模拟使用队列结构实现遍历目录之广度遍历
'''
import collections,os
#自定义函数:实现遍历多目录层级操作(广度遍历)
def getAllFileQU(path):
    #获取一个队列
    queue=collections.deque()
    #将path数据进队
    queue.append(path)
    #只要queue中还有数据,循环就继续
    while len(queue)!=0:
        file_path=queue.popleft()
        #获取file_path中所有字内容(文件、子目录)
        files_list=os.listdir(file_path)
        #循环处理file_list中的每一个元素
        for file in files_list:
            #还原其绝对路径值
            fileAbsPath=os.path.join(file_path,file)
            #判断是文件还是目录,操作和深度遍历一样
            if os.path.isfile(fileAbsPath):
                print('文件:'+file)
            else:
                print('目录:'+file)
                queue.append(fileAbsPath)

path=r'test.txt'
getAllFileQU(path)


为了更好的理解栈和列队存取数据的特点:

我们书写了深度遍历和广度遍历的代码操作,

从中得知不使用递归操作也可以使用遍历多层级目录的需求,

这样做的好处是:更加的节省内存资源

标签:遍历,python,queue,队列,file,print,path,第三十二
来源: https://www.cnblogs.com/hankleo/p/10453308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有