基础语法二
约 457 字
title:基础语法二 date: 2025-8-011 00:00:00
基础语法二
推导式
1、简介
列表推导式时一种一行代码生成列表的方式,比普通for循环更简洁
2、基本结构
[表达式 for 变量 in 可迭代对象]
表达式:生成新元素的计算方式,可直接是变量,也可以是公式
变量:从可迭代对象(列表,元组,字符串,range等)中以此取值
可迭代对象:能倍for遍历的对象
3、格式
普通写法
nums = []
for i in range(5):
nums.append(i * 2)
print(nums) # [0, 2, 4, 6, 8]
推导式写法
nums = [i * 2 for i in range(5)]
print(nums) # [0, 2, 4, 6, 8]
4、带条件筛选
格式:[表达式 for 变量 in 可迭代对象 if 条件]
if 条件决定是否保留该元素
# 筛选偶数的平方
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]
5、带if-else的推导式
if-else 写在表达式部分(不是末尾)。
适合对所有元素进行条件判断后生成结果。
result = [x if x % 2 == 0 else -x for x in range(5)]
print(result) # [0, -1, 2, -3, 4]
6、多循环的推导式
可以在推导式里写多个for
pairs = [(i, j) for i in range(3) for j in range(2)]
print(pairs)
# [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
# 等价于
pairs = []
for i in range(3):
for j in range(2):
pairs.append((i, j))
7、推导式的种类
不仅仅是列表,还有:
- 集合推导式:
{表达式 for ...}→ 自动去重 - 字典推导式:
{key_expr: value_expr for ...} - 生成器表达式:
(表达式 for ...)→ 节省内存
# 集合推导式
s = {x % 3 for x in range(10)}
print(s) # {0, 1, 2}
# 字典推导式
d = {x: x**2 for x in range(5)}
print(d) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}