Python 数据结构

字典 dict Python 中的 字典(dictionary) 是一种内置的数据结构,用于存储键值对(key-value pairs)。它非常适合快速查找和组织数据。 字典定义方式 # 空字典 d = {} # 含有数据的字典 d = { "name": "Alice", "age": 25, "city": "Beijing" } # 使用 dict() 构造函数 d = dict(name='Alice', age=25, city='Beijing') # 使用 zip() 和两个列表创建 keys = ['name', 'age', 'city'] values = ['Alice', 25, 'Beijing'] d = dict(zip(keys, values)) # 使用可迭代对象创建 d = dict([('name', 'Alice'), ('age', 25)]) 字典常用方法 方法/操作 说明 d[key] 获取 key 对应的值,若 key 不存在会报错 d.get(key[, default]) 获取 key 对应的值,若不存在返回默认值 d[key] = value 设置 key 的值,若 key 不存在会创建 d.keys() 返回所有键 d.values() 返回所有值 d.items() 返回键值对元组的集合 d.update([other]) 更新字典,可合并另一个字典或键值对 d.pop(key[, default]) 删除键并返回对应的值 d.popitem() 删除并返回最后一个键值对 d.clear() 清空字典 key in d 检查 key 是否在字典中 字典使用示例 # 创建字典 person = {'name': 'Alice', 'age': 30} # 添加/更新键值对 person['city'] = 'New York' person['age'] = 31 # 访问键值 print(person['name']) # Alice print(person.get('gender')) # None # 删除键 person.pop('age') # 遍历字典 for key, value in person.items(): print(f'{key}: {value}') # 合并字典 other = {'gender': 'female'} person.update(other) 字典推导式 squares = {x: x**2 for x in range(5)} # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} 列表 list Python 中的 列表(list) 是一种有序、可变的序列数据结构,可以存储任意类型的对象。它非常适合用于存储多个元素,并对其进行增删改查操作。 ...

2025年7月10日 · 7 分钟 · 阿征

Python 与多线程

在 Python 中,多线程(threading)主要用于 I/O 密集型任务(例如网络请求、文件读写),因为 Python 的 GIL(全局解释器锁) 限制了多个线程不能同时执行 CPU 密集型的 Python 字节码。 下面我一步步教你怎么用多线程 👇 🧩 一、基本用法:threading.Thread import threading import time def worker(name): print(f"{name} 开始工作") time.sleep(2) print(f"{name} 工作结束") # 创建线程 t1 = threading.Thread(target=worker, args=("线程1",)) t2 = threading.Thread(target=worker, args=("线程2",)) # 启动线程 t1.start() t2.start() # 等待线程结束 t1.join() t2.join() print("所有线程结束") 输出(大致): 线程1 开始工作 线程2 开始工作 线程1 工作结束 线程2 工作结束 所有线程结束 ✅ start() 启动线程 ✅ join() 等待线程执行结束 🧵 二、使用 for 创建多个线程 import threading import time def download_file(n): print(f"开始下载第 {n} 个文件...") time.sleep(1) print(f"第 {n} 个文件下载完成") threads = [] for i in range(5): t = threading.Thread(target=download_file, args=(i,)) threads.append(t) t.start() for t in threads: t.join() print("全部下载完成!") ⚙️ 三、使用锁(Lock)避免资源竞争 多线程访问共享资源(如全局变量)时,必须加锁。 ...

2025年7月10日 · 1 分钟 · 阿征