pin_drop当前位置:知识文库 ❯ 图文
Python列表pop方法
概述
pop() 方法用于删除列表中指定索引位置的元素,并返回被删除的元素。与 remove() 按值删除不同,pop() 按索引删除,且会返回被删除的值,这在需要获取并删除元素的场景中非常实用。
语法
代码示例
list.pop(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 报错
对空列表调用 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: 检查列表是否为空。
本文涉及AI创作
内容由AI创作,请仔细甄别