3.8 Python3 列表当做队列/栈

        在 Python3 中,列表(list)可以很方便地用作栈(后进先出,LIFO),但作为队列(先进先出,FIFO)时效率较低(因为从列表头部操作的时间复杂度为 O(n))。推荐使用 collections.deque 实现高效队列操作。


目录

1. 将列表当作栈使用

2. 将列表当作 队列(Queue) 使用

2.1 将列表当作队列使用(不推荐)

2.2 使用 collections.deque 实现高效队列

3. 完整实例对比

3.1 栈的实例

3.2 队列的实例(推荐 deque)

3.3 关键区别总结


1. 将列表当作栈使用

        栈的核心操作(直接用列表实现)

        栈的特点是后进先出(LIFO)

stack = []  # 创建空栈

# 压入元素(栈顶)
stack.append(1)    # 栈: [1]
stack.append(2)    # 栈: [1, 2]

# 弹出元素(栈顶)
top_element = stack.pop()  # 返回 2,栈变为 [1]

# 查看栈顶元素(不弹出)
if stack:
    peek_element = stack[-1]  # 返回 1

# 检查是否为空
is_empty = len(stack) == 0    # False

# 获取栈大小
size = len(stack)             # 1

2. 将列表当作 队列(Queue) 使用

        队列的特点是先进先出(FIFO)

2.1 将列表当作队列使用(不推荐)

         列表的 .pop(0) 操作效率低(需移动所有元素)

queue = []  # 创建队列(用列表)

# 入队(队尾添加)
queue.append(1)  # 队列: [1]
queue.append(2)  # 队列: [1, 2]

# 出队(队首移除)
first_element = queue.pop(0)  # 返回 1,队列变为 [2]

# 查看队首元素(不移除)
if queue:
    front_element = queue[0]  # 返回 2

# 其他操作类似栈(检查空、大小)

2.2 使用 collections.deque 实现高效队列

   deque 的 popleft() 和 appendleft() 操作均为 O(1):

from collections import deque

queue = deque()  # 创建高效队列

# 入队(队尾添加)
queue.append(1)     # 队列: deque([1])
queue.append(2)     # 队列: deque([1, 2])

# 出队(队首移除)
first_element = queue.popleft()  # 返回 1,队列变为 deque([2])

# 查看队首元素(不移除)
if queue:
    front_element = queue[0]  # 返回 2

# 其他操作
is_empty = len(queue) == 0
size = len(queue)

3. 完整实例对比

3.1 栈的实例

stack = []
stack.append("a")
stack.append("b")
print("Stack:", stack)          # ['a', 'b']
print("Pop:", stack.pop())      # 'b'
print("Top:", stack[-1])        # 'a'
print("Size:", len(stack))      # 1
3.8 Python3 列表当做队列/栈_第1张图片

3.2 队列的实例(推荐 deque

from collections import deque
q = deque()
q.append("x")
q.append("y")
print("Queue:", q)              # deque(['x', 'y'])
print("Dequeue:", q.popleft())  # 'x'
print("Front:", q[0])           # 'y'
print("Size:", len(q))          # 1

3.8 Python3 列表当做队列/栈_第2张图片

3.3 关键区别总结

操作 栈(用列表) 队列(用 deque
添加元素 append() append()
移除元素 pop() popleft()
查看顶部 list[-1] deque[0]

你可能感兴趣的:(Python,python,开发语言,队列/栈)