Python中如何实现双端队列和栈的比较
双端队列(deque)和栈(stack)都可以用于存储数据并支持检索、添加、删除等操作,但它们的实现方式和使用场景略有不同。
双端队列可以从队头或队尾添加或删除元素,因此适用于需要在两端频繁操作的情况,比如广度优先搜索和滑动窗口。
栈只能从栈顶添加和删除元素,因此适用于后进先出的场景,比如表达式求值和函数调用。
下面是Python中实现双端队列和栈的示例代码:
双端队列
使用collections中的deque模块可以轻松创建双端队列,常用方法包括append、appendleft、pop、popleft等:
from collections import deque deque1 = deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm']) print(deque1) # deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm']) deque1.append('皮') deque1.append('蛋') deque1.append('编') deque1.append('程') deque1.appendleft('h') print(deque1) # deque(['h', 'p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋', '编', '程']) deque1.pop() deque1.popleft() print(deque1) # deque(['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋'])
栈
使用列表来实现栈也很简单,常用方法包括append、pop等:
stack1 = [] stack1.append('p') stack1.append('i') stack1.append('d') stack1.append('a') stack1.append('n') stack1.append('c') stack1.append('o') stack1.append('d') stack1.append('e') stack1.append('.') stack1.append('c') stack1.append('o') stack1.append('m') print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm'] stack1.append('皮') stack1.append('蛋') stack1.append('编') stack1.append('程') print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮', '蛋', '编', '程'] stack1.pop() stack1.pop() print(stack1) # ['p', 'i', 'd', 'a', 'n', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '皮']
相关文章