列表对象在 Python 中提供添加、删除、查找、排序与复制等方法。部分方法会修改原列表(如 append、sort),部分仅查询或返回新对象(如 index、copy)。本节按功能分类说明常见调用,并对照表归纳是否改变原列表。
先看一组调用
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()
print(nums) # [1, 1, 2, 3, 4, 5, 6, 9]
nums.append(7)
print(nums) # [1, 1, 2, 3, 4, 5, 6, 9, 7]增加:append / insert / extend
lst = [1, 2]
lst.append(3) # 末尾加一个 → [1, 2, 3]
lst.insert(0, 0) # 下标0插入 → [0, 1, 2, 3]
lst.extend([4, 5]) # 末尾加多个 → [0, 1, 2, 3, 4, 5]
print(lst)append 将整个实参作为单个元素追加,extend 则把可迭代对象中的元素逐个展开追加:
a = [1, 2]
a.append([3, 4]) # [1, 2, [3, 4]],嵌套进去
b = [1, 2]
b.extend([3, 4]) # [1, 2, 3, 4],展开追加
print(a, b)删除:remove / pop / clear
lst = [1, 2, 3, 2, 4]
lst.remove(2) # 删除第一个出现的 2 → [1, 3, 2, 4]
print(lst)
lst.pop() # 删末尾并返回 → 4
print(lst) # [1, 3, 2]
lst.pop(1) # 删下标1 → 3
print(lst) # [1, 2]
lst.clear() # 清空
print(lst) # []查找:index / count
nums = [5, 1, 5, 3, 5]
print(nums.index(3)) # 2,第一个 3 的下标
print(nums.count(5)) # 3,5 出现几次
# print(nums.index(9)) # 找不到抛 ValueError排序与反转
nums = [3, 1, 2]
nums.sort() # 原地升序
print(nums) # [1, 2, 3]
nums.sort(reverse=True) # 原地降序
print(nums) # [3, 2, 1]
nums.reverse() # 原地反转
print(nums) # [1, 2, 3]元素为字符串的列表同样可按字典序排序:
words = ["banana", "apple", "cherry"]
words.sort()
print(words) # ['apple', 'banana', 'cherry']复制:copy
a = [1, 2, 3]
b = a.copy() # 浅拷贝,独立的一份
b.append(4)
print(a, b) # [1, 2, 3] [1, 2, 3, 4]改原列表还是返回新值
| 方法 | 是否改原列表 | 说明 |
|---|---|---|
append / insert / extend | 改 | 添加元素 |
remove / pop / clear | 改 | 删除元素 |
sort / reverse | 改 | 排序、反转 |
index / count | 不改 | 查询 |
copy | 不改 | 返回新列表 |
另有若干内置函数常与列表配合使用,但不属于列表方法,例如 sorted()、len()、sum()、min()、max()。sorted() 返回新列表,原列表保持不变:
nums = [3, 1, 4, 1, 5]
print(sorted(nums)) # [1, 1, 3, 4, 5] 新列表
print(nums) # [3, 1, 4, 1, 5] 原列表没动
print(sum(nums), min(nums), max(nums)) # 14 1 5本节归纳了 Python 列表方法的分类及是否原地修改。下一篇介绍列表推导式:用一行表达式由可迭代对象生成列表。