查看: 77|回复: 1

Python常用添加与删除元素API详解(list/dict/set/queue/stack)

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
在 Python 编程中,对容器类型进行元素的添加和删除是最基础也最频繁的操作。掌握不同数据结构对应的 API,不仅能提升编码效率,还能避免因误用导致的运行时错误。本文以 list、dict、set、str、stack、queue 六种常见类型为例,整理其添加与删除元素的标准方法,并附上可直接运行的代码示例。

---

## 1. list 列表

列表支持多种添加和删除方式,适用于不同场景。

| 操作 | API | 示例 |
|------|-----|------|
| 尾部添加 | append(x) | arr.append(4) |
| 指定位置插入 | insert(i, x) | arr.insert(1, 99) |
| 添加多个元素 | extend(iterable) | arr.extend([5, 6]) |
| 删除最后一个 | pop() | arr.pop() |
| 删除指定下标 | pop(i) | arr.pop(0) |
| 删除指定值 | remove(x) | arr.remove(99) |
| 删除指定下标 | del arr | del arr[1] |
| 清空 | clear() | arr.clear() |

演示代码:
  1. arr = [1, 2, 3]
  2. arr.append(4)          # [1, 2, 3, 4]
  3. arr.insert(1, 99)      # [1, 99, 2, 3, 4]
  4. arr.extend([5, 6])     # [1, 99, 2, 3, 4, 5, 6]
  5. arr.pop()              # 删除最后一个元素,返回6
  6. arr.pop(0)             # 删除下标0的元素,返回1
  7. arr.remove(99)         # 删除第一个值为99的元素
复制代码

注意:remove() 只会删除第一个匹配项,若值不存在会抛出 ValueError。

---

## 2. dict 字典

字典以键值对形式存储,添加和删除都通过键来操作。

| 操作 | API | 示例 |
|------|-----|------|
| 添加/修改 | dict[key] = value | mp["a"] = 1 |
| 删除指定 key | pop(key) | mp.pop("a") |
| 删除指定 key | del dict[key] | del mp["a"] |
| 安全删除(带默认值) | pop(key, 默认值) | mp.pop("x", None) |
| 清空 | clear() | mp.clear() |

演示代码:
  1. mp = {}
  2. mp["a"] = 1
  3. mp["b"] = 2
  4. mp["a"] = 100        # 修改 a 的值
  5. mp.pop("b")          # 删除 b,返回2
  6. mp.pop("x", None)    # x 不存在,返回 None 而不报错
复制代码

使用 pop(key, default) 可以避免 KeyError,适合不确定键是否存在的场景。

---

## 3. set 集合

集合是无序不重复元素的容器,添加和删除均有“安全”版本。

| 操作 | API | 示例 |
|------|-----|------|
| 添加一个元素 | add(x) | s.add(4) |
| 添加多个元素 | update(iterable) | s.update([5, 6]) |
| 删除指定元素 | remove(x) | s.remove(3) |
| 安全删除 | discard(x) | s.discard(10) |
| 随机删除一个 | pop() | s.pop() |
| 清空 | clear() | s.clear() |

演示代码:
  1. s = {1, 2, 3}
  2. s.add(4)            # {1, 2, 3, 4}
  3. s.update([5, 6])    # {1, 2, 3, 4, 5, 6}
  4. s.remove(3)         # 删除3,若不存在则 KeyError
  5. s.discard(10)       # 10不存在,无操作,不报错
复制代码

推荐使用 discard() 代替 remove() 以简化错误处理。

---

## 4. 字符串 str

字符串是不可变对象,不能直接增删字符,只能通过生成新字符串来间接实现。

错误示例:
  1. s = "abc"
  2. s[0] = "x"   # TypeError: 'str' object does not support item assignment
复制代码

正确做法:
  1. s = "abc"
  2. s = s + "d"          # "abcd"
  3. s = s.replace("a", "x")  # "xbcd"
复制代码

字符串的“添加”实际是拼接或替换后重新赋值,原字符串未被修改。

---

## 5. 栈 stack

Python 推荐用 list 模拟栈,利用 append 入栈、pop 出栈。
  1. stack = []
  2. stack.append(1)   # [1]
  3. stack.append(2)   # [1, 2]
  4. stack.pop()       # 返回2,栈变为[1]
复制代码

时间复杂度:append 和 pop 均为 O(1)。

---

## 6. 队列 queue

队列遵循先进先出,[collections.deque] 是高效的双端队列,推荐用于队列操作。

| 操作 | API | 示例 |
|------|-----|------|
| 入队(右端) | append(x) | q.append(1) |
| 出队(左端) | popleft() | q.popleft() |

演示代码:
  1. from collections import deque
  2. q = deque()
  3. q.append(1)         # deque([1])
  4. q.append(2)         # deque([1, 2])
  5. q.popleft()         # 返回1,队列变为deque([2])
复制代码

使用 deque 的 popleft() 比 list 的 pop(0) 效率更高(O(1) vs O(n))。

---

## 最常用记忆版

| 类型 | 添加 | 删除 |
|------|------|------|
| list | append() / insert() / extend() | pop() / remove() |
| dict | mp[key] = value | pop(key) / del mp[key] |
| set | add() / update() | discard() / remove() |
| stack | append() | pop() |
| queue | append() | popleft() |

熟练掌握这些 API 可以让你在处理 Python 数据时更加得心应手,避免低级错误。建议配合实际项目练习,加深记忆。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python常用添加与删除元素API详解(list/dict/set/queue/stack)

这篇整理非常实用,把日常开发中最常用的增删操作都覆盖到了,表格和代码示例也一目了然。对于新手来说,几个关键点值得特别留意:列表的 remove 只删第一个匹配值、字典的 pop 加默认值可以避免报错、集合用 discard 更安全,还有队列用 deque 的 popleft 比 list 的 pop(0) 高效很多。感谢分享,收藏了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-18 12:24 , Processed in 0.036952 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部