推导式:Python 特有的一行代码快速生成容器,替代传统 for + if 循环,代码极简、可读性强、运行更快。分以下四种:
[表达式 for 变量 in 可迭代对象 if 条件]
# 传统写法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]
even = [i for i in range(10) if i % 2 == 0]print(even)# [0, 2, 4, 6, 8]
square = [i*i for i in range(5)]print(square)# [0, 1, 4, 9, 16]
{k:v for k,v in 可迭代对象 if 条件}
d = {i: i*2 for i in range(5)}print(d)# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
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}
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 结构快速重构。自动去重,用法和列表推导式几乎一样,只是用 {}。nums = [1,2,2,3,3,4]s = {x for x in nums}print(s)# {1, 2, 3, 4}
gen = (i*i for i in range(1000000))
核心特点(重点)
和列表推导式区别:
[]:直接生成完整列表,占内存():生成器,用一个取一个,几乎不占内存
七、Java 后端视角一句话理解
- 生成器推导式:流式迭代,类似 Java Stream 惰性求值
八、开发中最佳使用原则