跳至主要內容

基础语法二

薇念约 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}