Python推导式是一种用简洁语法从可迭代对象生成新数据结构的写法,主要包括列表推导式、字典推导式和集合推导式。相比传统for循环,推导式代码更短、可读性更好,也更容易表达数据转换逻辑。

列表推导式怎么写
列表推导式的基本格式为 [表达式 for 变量 in 可迭代对象 if 条件],其中if部分可以省略。它适合用来做数据转换和过滤。
# 生成0到9的平方列表 squares = [x * x for x in range(10)] print(squares) # 过滤出偶数并转成字符串 evens = [str(x) for x in range(10) if x % 2 == 0] print(evens)
常见使用场景
- 从接口返回的字典列表中提取某个字段组成新列表
- 对文本按行读取后去掉首尾空格
- 把字符串数字列表转成整数列表
字典推导式怎么写
字典推导式格式为 {键表达式: 值表达式 for 变量 in 可迭代对象 if 条件},常用来做键值对转换或重组。
# 将列表元素作为键,长度作为值
words = ['apple', 'banana', 'pear']
word_len = {w: len(w) for w in words}
print(word_len)
# 交换字典的键和值
old = {'a': 1, 'b': 2}
new = {v: k for k, v in old.items()}
print(new)
常见使用场景
- 将两个长度相同的列表组合成字典
- 对已有字典的值统一做计算后生成新字典
- 按条件筛选字典中的部分键值对
集合推导式怎么写
集合推导式格式为 {表达式 for 变量 in 可迭代对象 if 条件},和列表推导式类似,但结果是一个无重复元素的集合。
# 从句子中取出所有不同字符
sentence = 'hello world'
chars = {c for c in sentence if c != ' '}
print(chars)
# 对数字取余后去重
mods = {x % 3 for x in range(10)}
print(mods)
常见使用场景
- 快速对列表去重且不关心顺序
- 提取多个集合中公共或不同的元素
- 做存在性判断前的标准化处理
书写推导式的注意点
推导式虽然好用,但不要写得太复杂。如果里面嵌套多层循环或条件,可读性会明显下降,此时建议改用普通for循环。另外,推导式会一次性生成所有元素,处理超大数据时可用生成器表达式 (表达式 for 变量 in 可迭代对象) 来节省内存。
| 类型 | 语法符号 | 结果类型 |
|---|---|---|
| 列表推导式 | [] | list |
| 字典推导式 | {} 带冒号 | dict |
| 集合推导式 | {} 无冒号 | set |
推导式本质是语法糖,理解其等价于for循环的展开方式,就能在写代码时自然判断该不该用。