pin_drop当前位置:知识文库 ❯ 图文

Python列表pop方法

概述

pop() 方法用于删除列表中指定索引位置的元素,并返回被删除的元素。与 remove() 按值删除不同,pop() 按索引删除,且会返回被删除的值,这在需要获取并删除元素的场景中非常实用。


语法

代码示例

list.pop(index=-1)
参数 说明
index 可选,要删除元素的索引,默认为 -1(最后一个元素)

返回值:被删除的元素


基本用法

弹出最后一个元素

代码示例

fruits = ["apple", "banana", "cherry"]
removed = fruits.pop()
print("被删除:", removed)
print("剩余:", fruits)

输出:

代码示例

被删除: cherry
剩余: ['apple', 'banana']

弹出指定索引元素

代码示例

nums = [10, 20, 30, 40, 50]
removed = nums.pop(2)
print("被删除:", removed)
print("剩余:", nums)

输出:

代码示例

被删除: 30
剩余: [10, 20, 40, 50]

弹出第一个元素

代码示例

queue = ["first", "second", "third"]
first = queue.pop(0)
print("弹出:", first)
print("剩余:", queue)

输出:

代码示例

弹出: first
剩余: ['second', 'third']

pop 与 remove 对比

特性 pop() remove()
删除方式 按索引删除 按值删除
返回值 被删除的元素 None
默认行为 删除最后一个元素 无默认,必须指定值
不存在时 IndexError ValueError
典型场景 栈/队列操作 过滤特定值

空列表 pop 报错

对空列表调用 pop() 会抛出 IndexError

代码示例

empty = []
empty.pop()

输出:

代码示例

IndexError: pop from empty list

安全方式

代码示例

stack = []
if stack:
    item = stack.pop()
else:
    print("列表为空")

常见应用场景

实现栈(后进先出)

代码示例

stack = []
stack.append("A")
stack.append("B")
stack.append("C")

print("出栈:", stack.pop())
print("出栈:", stack.pop())
print("栈内容:", stack)

输出:

代码示例

出栈: C
出栈: B
栈内容: ['A']

实现队列(先进先出)

代码示例

from collections import deque

queue = deque(["A", "B", "C"])
print("出队:", queue.popleft())
print("队列:", list(queue))

输出:

代码示例

出队: A
队列: ['B', 'C']

建议:实现队列应使用 collections.deque,其 popleft() 时间复杂度为 O(1),而列表 pop(0) 为 O(n)。

获取并删除元素

代码示例

data = [100, 200, 300]
last = data.pop()
print(f"取出: {last}, 剩余: {data}")

输出:

代码示例

取出: 300, 剩余: [100, 200]

注意事项

注意:性能差异:pop()(末尾)时间复杂度为 O(1),pop(0)(开头)为 O(n)。频繁在开头弹出元素应使用 deque

注意:索引越界:如果索引超出范围,会抛出 IndexError

注意:原地修改:pop() 会修改原列表,同时返回被删除的元素。


小结

  • pop(index):按索引删除元素并返回被删除的值

  • 默认行为:删除最后一个元素,时间复杂度 O(1)

  • pop(0):删除第一个元素,时间复杂度 O(n)

  • 典型场景:常用于栈操作,队列操作建议用 deque


练习题

练习1

练习1

编写一个函数 pop_middle(lst),删除并返回列表中间的元素。如果列表长度为偶数,删除并返回偏左的中间元素。

练习2

练习2

使用列表的 append()pop() 方法模拟浏览器的前进/后退功能。实现一个 Browser 类,包含 visit(url)back()forward() 方法。

常见问题

pop() 和 remove() 有什么区别?

pop() 按索引删除元素并返回被删除的值,默认删除最后一个;remove() 按值删除元素,只删除第一个匹配项,返回 None。

pop(0) 的性能问题是什么?

pop(0) 的时间复杂度是 O(n),因为删除第一个元素后,所有后续元素需要向前移动一位。频繁在开头弹出元素应使用 collections.deque,其 popleft() 为 O(1)。

对空列表调用 pop() 会怎样?

对空列表调用 pop() 会抛出 IndexError: pop from empty list。安全做法是在调用前用 if list: 检查列表是否为空。

标签: Python 列表方法 pop 栈操作 队列 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python列表remove方法 下一篇: Python列表sort方法

poll相关推荐

作者头像 智能小晨 python

Python元组命名namedtuple

发布日期 2026-05-31
深入学习Python命名元组namedtuple,掌握字段访问、_make创建、_asdict转字典、_replace替换字段等核心方法。理解命名元组与普通元组的区别,写出更清晰易读的Python代码。
作者头像 智能小晨 python

Python元组解包

发布日期 2026-05-31
全面学习Python元组解包技巧,包括基本解包、星号扩展解包、嵌套解包、交换变量和函数多值返回。掌握优雅的Python赋值语法,让你的代码更简洁高效。
作者头像 智能小晨 python

Python元组index方法

发布日期 2026-05-31
深入学习Python元组index()方法,掌握元素索引查找技巧。了解index()语法、指定范围查找、安全查找方法和实际应用场景,避免ValueError异常,提升Python编程效率。
作者头像 智能小晨 python

Python元组count方法

发布日期 2026-05-31
深入学习Python元组count()方法,掌握元素出现次数统计技巧。了解count()语法、性能优化建议、嵌套元组统计和实际应用场景,配合练习题巩固所学知识。