Python 列表方法里的 10 个英语词:从 append 到 copy

本篇目录
刚学 Python 时,列表操作经常靠记代码:添加元素用 append,取出元素用 pop,排序用 sort。隔几天不用,又要重新查一遍。
这些名字并不是随机字母。把它们当作描述动作的英语词,再结合代码观察结果,就更容易理解为什么这样命名。
这篇文章选择 10 个列表方法,按“添加、删除、查找、整理与复制”来认识。它们既是 Python 知识,也是阅读英文文档时会遇到的技术词汇。
1. append:在末尾追加一个元素
append 有“附加、追加”的意思。放到列表中,可以理解为:把传入的对象作为一个元素,放到列表末尾。
words = ["cache", "thread"]
words.append("queue")
print(words) # ['cache', 'thread', 'queue']这里追加的是一个字符串。如果传入一个列表,追加的仍然是一个元素,只不过这个元素本身是列表。
words = ["cache"]
words.append(["thread", "queue"])
print(words) # ['cache', ['thread', 'queue']]记忆时可以抓住两个信息:末尾和一个元素。
2. extend:把列表向后扩展
extend 有“延伸、扩展”的意思。它会遍历传入的可迭代对象,把其中的元素逐个加到原列表末尾。可迭代对象,就是能够逐个取出元素的对象,列表和字符串都是常见例子。
words = ["cache"]
words.extend(["thread", "queue"])
print(words) # ['cache', 'thread', 'queue']append 把整个对象作为一个元素追加;extend 逐个取出其中的元素。两者都能让列表变长,但结果的结构可能不同。

图中的两种操作都从 ["A"] 开始,传入的也都是 ["B", "C"]。注意结果里有没有嵌套的方括号。
3. insert:在指定位置插入
insert 的意思是“插入”。它不只关注末尾,还允许指定插入的位置。
words = ["cache", "queue"]
words.insert(1, "thread")
print(words) # ['cache', 'thread', 'queue']Python 列表的索引从 0 开始。这里的 1 是原来 "queue" 所在的位置,新元素插在它前面,后面的元素向后移动。
对照着记:append 是追加到末尾,insert 是插到指定位置。
4. remove:按值移除第一个匹配项
remove 的意思是“移除”。使用它时,告诉列表要移除的值,而不是位置。
words = ["cache", "thread", "cache"]
words.remove("cache")
print(words) # ['thread', 'cache']这里有两个 "cache",但只移除了第一个。不存在匹配值时,remove 会引发 ValueError,不会默默忽略。
记住:按值找,移除第一个。
5. pop:取出一个元素,并把它移除
pop 在日常表达中可以表示突然跳出、弹出。在列表里,可以把它理解为“取走一个元素”:元素从列表消失,同时作为结果返回。
words = ["cache", "thread", "queue"]
last_word = words.pop()
print(last_word) # queue
print(words) # ['cache', 'thread']不传索引时,pop() 取出最后一个元素。也可以写 pop(0),取出第一个元素。列表为空,或者指定索引超出范围时,会引发 IndexError。
remove 和 pop 都能移除元素,选择依据是:你手里掌握的是值,还是位置?你是否还需要拿到被移除的元素?

6. clear:清空列表
clear 作动词时有“清除、清空”的意思。clear() 会移除列表中的全部元素。
words = ["cache", "thread", "queue"]
words.clear()
print(words) # []可以把这三个词放在一起记:remove 移除某个值,pop 取出某个位置的元素,clear 清空整个列表。
7. index:找到第一次出现的位置
index 在技术语境中常译为“索引”。列表的 index() 方法会查找给定值,返回它第一次出现的索引。
words = ["cache", "thread", "cache"]
position = words.index("cache")
print(position) # 0它回答的是“在哪里”,不是“有几个”。如果值不存在,会引发 ValueError。只想判断有没有某个值时,可以直接使用 "cache" in words。
8. count:统计出现次数
count 作动词时有“计数”的意思。它回答的是:这个值在列表里一共出现了几次?
words = ["cache", "thread", "cache"]
print(words.count("cache")) # 2
print(words.count("queue")) # 0对照上一个词:index 关注位置,count 关注数量。没有匹配值时,count 返回 0。
9. sort:把原列表排好顺序
sort 有“分类、整理、排序”的意思。Python 列表的 sort() 会直接修改原列表,默认按升序排列。
numbers = [3, 1, 2]
result = numbers.sort()
print(numbers) # [1, 2, 3]
print(result) # None这里有个容易忽略的细节:排序后的内容留在原列表里,方法本身返回 None。 不要写成 numbers = numbers.sort(),否则变量 numbers 会变成 None。
如果希望保留原列表,并得到一个新的排序列表,可以使用内置函数 sorted(numbers)。数据能否排序,还取决于元素之间是否支持相应比较;不能认为任何混合列表都能直接排序。
10. copy:复制一层,不是复制所有层
copy 的意思是“复制”。list.copy() 创建一个新的列表,但它执行的是浅拷贝:复制外层列表,里面的元素仍然引用原来的对象。
先看一个没有嵌套列表的例子:
words = ["cache", "thread"]
backup = words.copy()
backup.append("queue")
print(words) # ['cache', 'thread']
print(backup) # ['cache', 'thread', 'queue']两个外层列表是独立的,所以给 backup 追加元素,不会给 words 追加元素。但如果元素本身是可变对象,例如内层列表,就需要注意共享关系:
groups = [["cache"], ["thread"]]
backup = groups.copy()
backup[0].append("queue")
print(groups) # [['cache', 'queue'], ['thread']]这次改动的是两边共享的内层列表。需要递归复制嵌套对象时,再了解 copy.deepcopy();不要仅凭“复制”两个字推断所有层都已经独立。
用一张表回顾这 10 个词
单词 | 在列表中的动作 | 关键区别 |
|---|---|---|
append | 末尾追加 | 传入对象作为一个元素 |
extend | 向后扩展 | 逐个加入可迭代对象中的元素 |
insert | 指定位置插入 | 指定索引处插入新元素 |
remove | 按值移除 | 只移除第一个匹配项 |
pop | 按索引取出 | 移除并返回元素,默认取末尾 |
clear | 清空 | 移除全部元素 |
index | 查找位置 | 返回第一次出现的索引 |
count | 统计次数 | 不存在时返回 0 |
sort | 原地排序 | 改变原列表,返回 None |
copy | 浅拷贝 | 新建外层列表,仍共享内部对象 |
表里的动作只是记忆线索,不能代替完整规则。尤其要区分“列表发生了什么变化”和“方法返回了什么”。本文这 10 个方法中,pop、index、count、copy 会返回各自的结果,其余方法修改原列表并返回 None。
把方法名变成读得懂的英语
下次看到一个方法名,可以按这个顺序学:
认识动作。 先理解单词在当前场景中表达什么,例如追加、扩展、移除。
运行最小示例。 用两三个元素,观察调用前后的列表和返回值。
对比相近词。 把
append / extend、remove / pop、index / count放在一起,不只记一条中文释义。隔一段时间回顾。 合上解释,尝试说出方法的作用,再用代码确认。
可以先用三个问题自测:把两个新词分别加到列表末尾,用哪个方法?取走最后一个词并保留它,用哪个方法?想知道 cache 出现了几次,用哪个方法?答案依次是 extend、pop、count。
码背单词是一款面向程序员的技术英语学习工具,围绕技术词书、程序员释义、编程例句和代码语境帮助理解词汇。如果你希望把开发时遇到的英语词汇持续学下去,可以从码背单词的产品介绍了解学习方式,也可以先阅读码背单词为谁设计、怎么学。
参考资料
本文示例面向 Python 3,使用内置列表,无需安装第三方包。方法行为与返回值依据 Python 官方文档核对;配图是本文的概念示意图。