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)) # 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