数据结构
1. 列表进阶
fruits = ["orange", "apple", "banana"]
fruits.append("kiwi")
fruits.sort()
fruits.pop() # 弹末尾
fruits.index("apple")
fruits.count("apple")
fruits.reverse()
fruits.copy()
fruits.clear()列表推导式
squares = [x * x for x in range(10)]
flat = [x for row in matrix for x in row]嵌套推导
matrix = [
[1, 2, 3],
[4, 5, 6],
]
transposed = [[row[i] for row in matrix] for i in range(3)]
# [[1, 4], [2, 5], [3, 6]]2. del 语句
a = [1, 2, 3, 4, 5]
del a[0] # [2, 3, 4, 5]
del a[1:3] # [2, 5]
del a # 删除变量本身3. 元组 Tuple
不可变序列:
t = 1, 2, 3
t = (1,) # 单元素元组
empty = ()
nested = (1, (2, 3))
x, y = (1, 2) # 解包元组不可变,但元素若是可变对象则仍可改:
t = ([1],) t[0].append(2)
4. 集合 Set
无序、无重复元素的容器:
s = {1, 2, 3}
s.add(4)
s.remove(2)
s | {5, 6} # 并集
s & {3, 4, 5} # 交集
s - {3} # 差集
1 in s # True集合推导:
{x for x in "abracadabra" if x in "abc"}
# {'a', 'b', 'c'}5. 字典 Dict
键值映射,键必须可哈希:
d = {"one": 1, "two": 2}
d["three"] = 3
d.get("four", 0) # 0
d.keys()
d.values()
d.items()
"one" in d
del d["one"]
d.pop("two")
d.update({"x": 0})字典推导:
{x: x * x for x in range(5)}遍历
for k, v in d.items():
print(k, v)Python 3.7+ 字典保留插入顺序。
6. 循环技巧
# 同时遍历键值
for k, v in d.items(): ...
# 同时遍历多个序列
for a, b in zip(L1, L2): ...
# 反向
for x in reversed(seq): ...
# 排序
for x in sorted(s, key=...): ...7. 深浅拷贝
import copy
a = [[1, 2], [3, 4]]
b = a # 引用同一对象
c = a.copy() # 浅拷贝(外层新,内层共享)
d = copy.deepcopy(a) # 深拷贝
a[0].append(99)
b[0] # [1, 2, 99]
c[0] # [1, 2, 99] ← 浅拷贝受影响
d[0] # [1, 2] ← 深拷贝独立8. 常用容器总结
| 类型 | 可变 | 有序 | 重复 | 示例 |
|---|---|---|---|---|
list |
✅ | ✅ | ✅ | [1, 2, 3] |
tuple |
❌ | ✅ | ✅ | (1, 2, 3) |
set |
✅ | ❌ | ❌ | {1, 2, 3} |
dict |
✅ | ✅(3.7+) | 键不重复 | {"a": 1} |
frozenset |
❌ | ❌ | ❌ | frozenset({1,2}) |
小结
熟练使用 list、tuple、set、dict 是 Python 编程的核心基本功。