Python列表对象带有一批方法,覆盖添加、删除、查找、排序和复制。有的会直接改原列表(如 appendsort),有的只查询或返回新对象(如 indexcopy),写的时候先分清这一点。

先看一组调用

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))     # 3,第一个 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