推导式(Comprehension)是 Python 中一种简洁、高效地创建序列(如列表、集合、字典)的语法。它允许你在一个表达式中结合 for 循环和 if 条件,快速生成新的数据结构。
推导式的核心思想是:
“从一个已有的可迭代对象(如列表、range、字符串等)出发,通过某种规则生成新的序列。”
✅ 推导式的几种类型
推导式每种使用不同的括号:
| 类型 | 语法 | 括号 | 生成的对象 |
|---|---|---|---|
| 列表推导式 | [表达式 for 变量 in 可迭代对象 if 条件] | [ ] | list(列表) |
| 集合推导式 | {表达式 for 变量 in 可迭代对象 if 条件} | { } | set(集合,无重复元素) |
| 字典推导式 | {键: 值 for 变量 in 可迭代对象 if 条件} | { } | dict(字典) |
| 生成器表达式 | (表达式 for 变量 in 可迭代对象 if 条件) | ( ) | generator(生成器,惰性求值) |
🧩 详细示例
1. 列表推导式 [ ] → 生成 list
# 生成 1 到 10 的平方
squares = [x**2 for x in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 集合推导式 { } → 生成 set
# 生成字符串中所有唯一的小写字母
text = "hello world"
unique_letters = {c for c in text if c.islower()}
print(unique_letters) # {'h', 'e', 'l', 'o', 'w', 'r', 'd'} ← 无序,无重复
3. 字典推导式 { } → 生成 dict
# 生成数字到其平方的映射
square_dict = {x: x**2 for x in range(1, 6)}
print(square_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
4. 生成器表达式 ( ) → 生成 generator
# 生成一个“平方数生成器”,不立即计算,节省内存
squares_gen = (x**2 for x in range(1, 11))
print(squares_gen) # <generator object <genexpr> at 0x...>
print(list(squares_gen)) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- ✅ 如果你想生成一个 列表(list),就用
[ ]。 - ✅ 如果你想生成一个 集合(set),就用
{ }。 - ✅ 如果你想生成一个 字典(dict),就用
{ }(但必须是key: value形式)。 - ✅ 如果你想生成一个 生成器(generator),就用
( )。
🔁 括号的类型决定了你最终得到的数据结构。
⚠️ 注意:{ } 的歧义
{x for x in range(5)} # 集合推导式 → {0, 1, 2, 3, 4}
{x: x**2 for x in range(5)} # 字典推导式 → {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
{x for x in range(5)} # 如果写成 {x} 是语法错误?不,它是集合推导式
Python 通过语法结构判断:
{表达式 for ...}→ 集合{键: 值 for ...}→ 字典
✅ 总结
| 问题 | 回答 |
|---|---|
| 什么是推导式? | 一种用简洁语法快速创建列表、集合、字典或生成器的方式。 |
推导式是 Python 的“语法糖”,能让代码更简洁、更易读,是 Python 开发者的必备技能。
Python推导式详解

被折叠的 条评论
为什么被折叠?



