博客简介
本篇博客介绍Python中常见的数据结构两种数据结构stack&deque,后序还会继续完善:
- 栈stack
- 双端队列deque
将列表作为栈stack
栈是一种简单却作用巨大的结构,具有后进先出的特性FILO,对于压栈和弹栈的操作,我们可以直接用List来操作,可以方便的使用append(),pop()操作。以下是List的函数方法:
序号 | 函数 |
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
方法 | 描述 |
list.append(x) | 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 |
list.pop([i]) | 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。) |
list.extend(L) | 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。 |
list.insert(i, x) | 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。 |
list.remove(x) | 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。 |
list.clear() | 移除列表中的所有项,等于del a[:]。 |
list.index(x) | 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。 |
list.count(x) | 返回 x 在列表中出现的次数。 |
list.sort() | 对列表中的元素进行排序。 |
list.reverse() | 倒排列表中的元素。 |
list.copy() | 返回列表的浅复制,等于a[:]。 |
实现举例:
def main():
stack=[]
print("in stack")
for i in range(10):
stack.append(i)
print(i,end=' ')
print("out stack")
for j in range(10):
print(stack.pop(),end=' ')
print("length of stack is:",len(stack))
main()
'''
in stack
0 1 2 3 4 5 6 7 8 9 out stack
9 8 7 6 5 4 3 2 1 0 length of stack is: 0
'''
双端队列deque
双端对列具有两端进入,两端弹出的特性,在处理一些对称性问题是否有效,同时deque也具有queue的先进先出的特性FIFO,广泛应用于深度搜索:
- 右端入队列:deque.append()
- 右端出队列:deque.pop()
- 左端入队列:deque.appendleft()
- 左端出队列:deque.popleft()
- 判断长度:len(deque)
- 头文件:from collections import deque
用法举例
from collections import deque
def main():
que=deque()
a=["A","B","C"]
b=[1,2,3,4,5,6]
for x in a:
que.append(x)
print("popleft:",end=' ')
for i in range(3):
print(que.popleft(),end=' ')
for x in b:
que.append(x)
print("\npop:",end=' ')
for i in range(6):
print(que.pop(),end=' ')
print("\nlen:",len(que))
que.appendleft(1)
print(que)
main()
'''
popleft: A B C
pop: 6 5 4 3 2 1
len: 0
deque([1])
'''