Python 的推导表达式

Posted on Tue, 30 Sep 2025 12:01:42 +0800 by LiangMingJian


概述

推导表达式是 Python 中用以快速简单生成列表,字典,集合,生成器等一种工具。

列表推导式

[表达式 for 变量 in 迭代对象][表达式 for 变量 in 迭代对象 if 条件]

该推导式会在执行后生成一个按表达式要求的列表。

# 返回 0 到 9 的数值,并将数值乘 2
list1 = [i * 2 for i in range(10)]  
print(list1)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 返回 0 到 9 的偶数,并将数值乘 2
list1 = [i * 2 for i in range(10) if i % 2 == 0]  
print(list1)
# [0, 4, 8, 12, 16]

字典推导式

{变量: 表达式 for 变量 in 迭代对象}{变量: 表达式 for 变量 in 迭代对象 if 条件}

该推导式会在执行后生成一个键是迭代对象变量,值是表达式要求的字典。

# 返回 0 到 9 的数值,并将数值乘 2
dict1 = {i: i * 2 for i in range(5)}  
print(dict1)
# {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}

# 返回 0 到 9 的偶数,并将数值乘 2
dict1 = {i: i * 2 for i in range(5) if i % 2 == 0}  
print(dict1)
# {0: 0, 2: 4, 4: 8}

集合推导式

{表达式 for 变量 in 迭代对象}{表达式 for 变量 in 迭代对象 if 条件}

该推导式会在执行后生成一个按表达式要求的集合。

set1 = {i * 2 for i in range(5)}  
print(set1)
# {0, 2, 4, 6, 8}

set1 = {i * 2 for i in range(5) if i % 2 == 0}  
print(set1)
# {0, 8, 4}

生成器表达式

(表达式 for 变量 in 迭代对象)(表达式 for 变量 in 迭代对象 if 条件)

该推导式会在执行后生成一个按表达式要求的生成器。

生成器的详情介绍可查看: Python 的生成器

gen1 = (i * 2 for i in range(5))  
print(gen1)  
print(next(gen1))
# <generator object <genexpr> at 0x000001DE2B915150>
# 0

gen1 = (i * 2 for i in range(5) if i % 2 == 0)
print(gen1)  
print(next(gen1))
# <generator object <genexpr> at 0x000001DE2B915150>
# 0

拓展阅读:IF 条件推导式

在上述推导表达式中,都支持通过 if 进行条件判断。特别的,这里的 if 表达式也可以单独作为一个推导式使用,能实现更简单的代码结构。

在单独使用时,该条件表达式需要写成 值1 if 条件 else 值2 的三元结构。在条件真时,使用 if 前的值;在条件假时使用,else 后的值。

x = 10  
res = "大于5" if x > 5 else "小于等于5"  
print(res)
# 大于 5