当前位置:首页>python>Python 四大推导式

Python 四大推导式

  • 2026-10-11 07:50:17
Python 四大推导式
一、什么是推导式
推导式:Python 特有的一行代码快速生成容器,替代传统 for + if 循环,代码极简、可读性强、运行更快。分以下四种:
  1. 列表推导式 []
  2. 字典推导式 {k:v}
  3. 集合推导式 {}
  4. 生成器推导式 ()
通用模版语法:
[表达式 for 变量 in 可迭代对象 if 条件]
二、列表推导式(最常用)
语法:
[表达式 for i in 序列 if 条件]
示例 1:生成 0~9 列表
# 传统写法lst = []for i in range(10):    lst.append(i)# 列表推导式lst = [i for i in range(10)]print(lst)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
示例 2:加条件,只保留偶数
even = [i for i in range(10) if i % 2 == 0]print(even)# [0, 2, 4, 6, 8]
示例 3:表达式做加工
square = [i*i for i in range(5)]print(square)# [0, 1, 4, 9, 16]
特点:
  • 生成 list 
  • 一次性把所有元素载入内存 
  • 适合小数据量
三、字典推导式
快速生成 / 过滤 / 反转键值对。
语法:
{k:v for k,v in 可迭代对象 if 条件}
示例 1:普通构造:
d = {i: i*2 for i in range(5)}print(d)# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
示例 2:过滤
data = {"a":10, "b":20, "c":30}# 只保留值大于15的键值对new_d = {k:v for k,v in data.items() if v > 15}print(new_d)# {'b': 20, 'c': 30}
示例 3:键值互换
data = {"a":10, "b":20, "c":30}swap_d = {v:k for k,v in data.items()}# {10: 'a', 20: 'b', 30: 'c'}
适用场景:LangGraph 状态字典、配置映射、JSON 结构快速重构。
四、集合推导式
自动去重,用法和列表推导式几乎一样,只是用 {}。
语法:
{表达式 for i in 序列 if 条件}
示例:
nums = [1,2,2,3,3,4]s = {x for x in nums}print(s)# {1, 2, 3, 4}
特点:
  • 自动去重
  • 无序
  • 适合去重、集合筛选
五、生成器推导式(括号)
语法:
(表达式 for i in 序列 if 条件)
示例:
gen = (i*i for i in range(1000000))

核心特点(重点)

  • 不一次性生成所有数据,惰性迭代
  • 极度省内存
  • 只能遍历一次
  • 大数据量优先用它

和列表推导式区别:

  • []:直接生成完整列表,占内存
  • ():生成器,用一个取一个,几乎不占内存
六、四大推导式对比表(必背)
推导式
符号
返回类型
是否占全量内存
适用场景
列表推导式
[]
list
是
小数据、需要多次使用
字典推导式
{k:v}
dict
是
键值对映射、过滤配置
集合推导式
{}
set
是
去重、集合运算
生成器推导式
()
generator
否 (惰性)
超大序列、循环遍历一次

七、Java 后端视角一句话理解

  • 列表推导式:一行代替 for 循环 add 集合
  • 字典推导式:一行构造 / 过滤 HashMap
  • 集合推导式:一行去重
  • 生成器推导式:流式迭代,类似 Java Stream 惰性求值

八、开发中最佳使用原则

  • 小数据、要反复用 → 列表推导式
  • 键值对、配置映射 → 字典推导式
  • 需要去重 → 集合推导式
  • 海量数据、遍历一次 → 生成器推导式
  • 尽量少写多层嵌套推导式,可读性变差

最新文章

随机文章