一、理解推导式的本质
1.1 什么是推导式?
推导式是 Python 的语法糖,用声明式语法替代命令式循环,实现快速构建数据容器。其核心优势:
# 传统循环
result = []
for item in iterable:
if condition:
result.append(operation(item))
# 推导式版本
result = [operation(item) for item in iterable if condition]
1.2 四大推导式类型对比
类型 | 符号 | 输出类型 | 典型应用场景 |
---|---|---|---|
列表推导式 | [] |
list | 数据转换/过滤 |
字典推导式 | {} |
dict | 键值重组/数据映射 |
集合推导式 | {} |
set | 去重/集合运算 |
生成器表达式 | () |
generator | 大数据流处理 |
二、列表推导式深度解析
2.1 基础应用
# 生成 0-9 的平方列表
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2.2 条件过滤
# 仅保留偶数平方
even_squares = [x**2 for x in range(10) if x%2 == 0]
# [0, 4, 16, 36, 64]
2.3 嵌套循环
# 矩阵展平
matrix = [[1,2,3], [4,5,6], [7,8,9]]
flat = [num for row in matrix for num in row]
# [1,2,3,4,5,6,7,8,9]
-
过滤行:将条件放在行的循环之后,元素的循环之前。
# 仅处理长度大于2的行 flat = [num for row in matrix if len(row) > 2 for num in row]
-
过滤元素:将条件放在元素的循环之后。
# 仅保留偶数 flat = [num for row in matrix for num in row if num % 2 == 0]
-
同时过滤行和元素:
# 处理非空行中的正数 flat = [num for row in matrix if row for num in row if num > 0