1、栈
'''
栈:数据存储先进后出
'''
一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,栈又称为后进先出的线性表。
a1数据是最先进入栈中的,但要想取出a1,必须先将其上面的所有数据依次取出才行
stack = []
#压栈(向栈里面存数据)
stack.append("A")
print(stack)
stack.append("B")
print(stack)
stack.append("C")
print(stack)
#出栈(从栈中取数据)
res = stack.pop()
print("res1=",res)
print(stack)
res2 = stack.pop()
print("res2=",res2)
print(stack)
res3 = stack.pop()
print("res3=",res3)
print(stack)
2、队列
'''
----------------------------
E D C B A
----------------------------
队列先进先出
'''
import collections
queue =collections.deque()
print(queue)
#进队
queue.append("A")
print(queue)
queue.append("B")
print(queue)
queue.append("C")
print(queue)
#出队
res1 = queue.popleft()
print("res1=",res1)
res2= queue.popleft()
print("res2=",res2)
res3 = queue.popleft()
print("res3=",res3)
#运行结果
'''
deque([])
deque(['A'])
deque(['A', 'B'])
deque(['A', 'B', 'C'])
res1= A
res2= B
res3= C
'''
3、递归:
def a():
print("*****")
'''
递归调用:一个函数调用了自身,称为递归调用
凡是循环可以做的事,递归都可以做
'''
'''
方式:
1、写出临界条件;
2、找这一次和上一次的关系;
3、假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果
'''
#输入一个数(>=1),求1+2+3+....+n的值
#循环写法:
# def sum1(n):
# sum = 0
# for x in range(1,n+1):
# sum += x
# return sum
# res = sum1(5)
# print("res=",res)
#递归:
def sum2(n):
if n == 1:
return 1
else:
return n +sum2(n-1)
res = sum2(5)
print("res=",res)
4、递归遍历目录:
import os
path = r"F:\untitled\menu"
def getAllDir(path,sp = ""):
#得到当前目录下所有文件
fileList = os.listdir(path)
#处理每一个文件
sp +=" "
#处理每一个文件
for fileNmae in fileList:
#判断是否是路径(用绝对路径)
fileAbspath = os.path.join(path,fileNmae)
if os.path.isdir(fileAbspath):
print(sp + "目录:",fileNmae)
getAllDir(fileAbspath,sp)
else:
print(sp + "普通文件:",fileNmae)
getAllDir(r"F:\untitled\menu")