列表、字典与集合
Python 内置多种容器类型,是日常开发最常用的数据结构。
列表 list
有序、可变、允许重复:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| nums = [1, 2, 3] mixed = [1, "hello", True, [1, 2]]
nums[0] nums[-1] nums[1:3] nums[:2] nums[::2]
nums.append(4) nums.extend([5, 6]) nums.insert(0, 0) nums.pop() nums.remove(2) del nums[0]
len(nums) 3 in nums nums.index(3) nums.count(3) nums.sort() sorted(nums) nums.reverse()
|
浅拷贝与深拷贝
1 2 3 4 5 6 7 8
| import copy
a = [[1, 2], [3, 4]] b = a.copy() c = copy.deepcopy(a)
a[0][0] = 99
|
元组 tuple
有序、不可变:
1 2 3 4 5
| point = (3, 4) single = (42,)
x, y = point name, age, *_ = ("Alice", 25, "Beijing", "CN")
|
元组适合固定结构的数据,如坐标、数据库行、函数多返回值。
字典 dict
键值对,键必须可哈希(不可变类型):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| user = {"name": "Alice", "age": 25} user["email"] = "a@example.com"
user.get("phone") user.get("phone", "N/A")
for key in user: print(key, user[key])
for key, value in user.items(): print(key, value)
defaults = {"role": "user"} profile = defaults | user
{x: x ** 2 for x in range(5)}
|
OrderedDict 与 defaultdict
1 2 3 4 5 6 7 8 9
| from collections import defaultdict, Counter
dd = defaultdict(list) dd["a"].append(1)
counter = Counter("hello")
|
集合 set
无序、不重复:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| s = {1, 2, 3} s = set([1, 2, 2, 3])
s.add(4) s.remove(2) s.discard(99)
a = {1, 2, 3} b = {2, 3, 4} a | b a & b a - b a ^ b
|
去重:
1
| unique = list(set([1, 2, 2, 3, 3]))
|
类型对比
| 类型 |
有序 |
可变 |
重复 |
典型用途 |
| list |
是 |
是 |
是 |
序列数据 |
| tuple |
是 |
否 |
是 |
固定记录 |
| dict |
3.7+ 保序 |
是 |
键唯一 |
映射、配置 |
| set |
否 |
是 |
否 |
去重、集合运算 |
小结
- list 最常用,注意切片与浅拷贝
- dict 是 Python 核心数据结构,
.get() 比直接 [] 更安全
- set 适合去重和集合运算
- 复杂场景优先考虑
collections 模块