Python | 七、栈 Stack、队列 Queue、双端队列deque类

栈的基础知识

  • 是一种数据结构,当需要判断当前元素和上一元素的关系时常用,在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])
    • 添加元素:
      • 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]
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值