栈的基础知识
- 是一种数据结构,当需要判断当前元素和上一元素的关系时常用,在Python中以列表来模拟实现
- 特点:先进后出
栈的基本操作
- 因为Python中通过列表模拟实现栈,所以以下的基本操作实际是列表的一些操作
- 获取长度,使用
len(stack)
方法 - 进栈,使用
stack.append()
方法 - 出栈,使用
stack.pop()
方法(将移除最后一个也就是栈顶元素) - 获取栈顶元素,使用
stack[-1]
- 判断是否为空,可以通过
if not stack
来判定,因为Python中列表、字符串、元组等容器在空的时候为False,非空时为True
队列的基础知识
- 是一种数据结构,在Python中使用标准库queue模块里的Queue类进行创建,当然,也可以使用Python里的列表结构进行模拟实现
- 特点:先进先出
队列的基本操作
- 如果通过列表模拟实现队列,则以下的基本操作实际是列表的一些操作
- 获取长度,使用
len(queue)
方法 - 入队,使用
queue.append()
方法 - 出队,使用
queue.pop(0)
方法(将移除第一个也就是队列首元素) - 获取队列首元素,使用
queue[0]
- 判断是否为空,可以通过
if not queue
来判定,因为Python中列表、字符串、元组等容器在空的时候为False,非空时为True
- 获取长度,使用
- 如果使用queue模块中的Queue类
- 创建,
my_queue = queue.Queue()
- 入队,使用
my_queue.put(value)
方法 - 出队并获取元素,使用
my_queue.get()
方法(将移除并返回第一个也就是队列首元素) - 判断长度,使用
my_queue.qsize()
- 判断是否为空,使用
my_queue.empty()
- 创建,
双端队列deque类
- deque是double-ended queue,双端队列
- 在Python中,deque(双端队列)是collections模块中的一个类,它提供了一个双向队列。deque被设计用来从头部和尾部高效地添加(append)和弹出(pop)元素。这使得它非常适合用作栈或队列,因为它的前后端操作的时间复杂度均为O(1)
- 用法
- 初始化: 、
- 可以通过传递一个可迭代对象来初始化deque,如
d = deque([1, 2, 3, 4])
- 可以通过传递一个可迭代对象来初始化deque,如
- 添加元素:
- append(x): 在右端添加一个元素。
- appendleft(x): 在左端添加一个元素。
- 移除元素:
- pop(): 移除并返回右端元素。
- popleft(): 移除并返回左端元素。
- 扩展:
- extend(iterable): 将iterable参数的内容添加到deque的右端。
- extendleft(iterable): 将iterable参数的内容添加到deque的左端。注意,左端扩展时所添加序列的顺序会被反转。如
d.extendleft([0, -1]) # 左端扩展,注意添加后序列反转,deque变为[-1, 0, 原队列的元素]
- 旋转:
- 正值n时向右旋转,负值n时向左旋转,如
d.rotate(1)
,若原队列为[-1, 0, 1, 2, 3, 4, 5, 6, 7],则右旋转1得到的队列即为[7, -1, 0, 1, 2, 3, 4, 5, 6]
- 正值n时向右旋转,负值n时向左旋转,如
- 初始化: 、