Skip to main content

Command Palette

Search for a command to run...

Python推导式的类型、特点及使用建议

Updated
•1 min read•View as Markdown
T
确定性世界里,一个被允许的异常

Python推导式的类型、特点及使用建议

Python 推导式是一种简洁创建序列(列表、字典、集合)或生成器的语法糖,核心是用一行 / 多行简洁代码实现循环 + 条件判断的逻辑,大幅简化代码量。以下是分类总结:

一、核心类型

1. 列表推导式

语法:[表达式 for 变量 in 可迭代对象 if 条件] 作用:快速生成列表,替代for+append的繁琐写法


# 基础:生成1-5的平方
squares = [x**2 for x in range(1,6)]

# 带条件:筛选偶数的平方
even_squares = [x**2 for x in range(1,10) if x%2==0]

# 嵌套循环:展平二维列表
flat = [num for row in [[1,2],[3,4]] for num in row]  # [1,2,3,4]

2. 字典推导式

语法:{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件} 作用:直接生成字典,替代for+赋值


# 基础:数字到平方的映射
square_dict = {x: x**2 for x in range(1,6)}

# 带条件:筛选键为偶数的项
even_dict = {x: x**2 for x in range(1,10) if x%2==0}

3. 集合推导式

语法:{表达式 for 变量 in 可迭代对象 if 条件} 作用:生成去重的集合,特性同集合(无序、唯一)


# 基础:生成平方的集合(自动去重)
square_set = {x**2 for x in [-2,-1,0,1,2]}  # {0,1,4}

# 带条件:筛选大于0的平方
pos_set = {x**2 for x in range(-5,5) if x**2 > 0}

4. 生成器推导式

语法:(表达式 for 变量 in 可迭代对象 if 条件) 作用:生成惰性迭代器(节省内存),需迭代时才计算值


# 生成器对象(不立即计算)
gen = (x**2 for x in range(1,6))
# 迭代取值
print(list(gen))  # [1,4,9,16,25]

二、核心特点

  1. 简洁性:用一行代码替代传统的循环 + 条件 + 追加操作

  2. 可读性:逻辑清晰(表达式→循环→条件),适合简单场景

  3. 效率:底层优化,比手动循环更快

  4. 灵活性:支持嵌套循环、多条件判断

三、使用建议

  • 适合场景:简单的序列生成(如筛选、转换)

  • 避免场景:逻辑过于复杂(嵌套多层 / 多条件),否则可读性下降(建议改用普通循环)

推导式的核心是 “用简洁语法实现循环逻辑”,根据需求选择对应类型即可

More from this blog

离散数学5.1-二元关系一

一、有序对和笛卡尔积 1、有序对(序偶):由两个元素 x 和 y 按照确定顺序排列组成的二元组,记作⟨x, y⟩ 2、笛卡尔积:以 A 中元素为第一元、B 中元素为第二元,构造所有有序对⟨x,y⟩; 由全部这类有序对构成的集合,称为 A 与 B 的笛卡尔积,记作 AXB 例题: 已知 A={a,b}, B={0,1,2},求笛卡尔积 A × B、B × A A × B(前元取自 A,后元取自 B

Jun 25, 20261 min read14
离散数学5.1-二元关系一
天

天创域

37 posts

欢迎来到天创的博客