002-推导式(Comprehension)

上一节我们讲了Python的数据类型,这一节我们来讲一下推导式,

推导式(Comprehension)

推导式是Python的一种特性,可以用来快速生成一个列表,元组,集合,字典等数据结构。

列表(List)、元组(Tuple)、集合(Set)、字典(Dict) 推导式在Python中有一些共同点和不同点。

共同点

  1. 语法结构:推导式的基本语法结构相似,都是在一对括号内使用表达式和循环。
  2. 简洁性:推导式使代码更加简洁和易读。
  3. 性能:推导式通常比使用循环和条件语句创建相同数据结构的性能更高。

不同点

  1. 括号类型

    • 列表推导式使用方括号 []
    • 元组推导式使用圆括号 ()但实际上是生成器表达式
    • 集合推导式使用花括号 {}
    • 字典推导式使用花括号 {},但需要键值对
  2. 结果类型

    • 列表推导式生成列表。
    • 元组推导式生成生成器对象,需要用 tuple() 函数转换为元组
    • 集合推导式生成集合。
    • 字典推导式生成字典。

这些推导式使得创建和操作数据结构更加简洁和高效。

所以,推导式的结构为 【$ 表示对应数据结构的符号】
$ out_exp_res for out_exp in input_list if condition $

  • out_exp_res 是输出表达式
  • out_exp 是迭代变量
  • input_list 是输入列表
  • condition 是过滤条件,可以省略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 列表推导式
list_comp = [x * x for x in range(10)]
print(list_comp) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 元组推导式(生成器表达式): 这里实际上是生成器表达式
tuple_gen = (x * x for x in range(10))
print(tuple(tuple_gen)) # (0, 1, 4, 9, 16, 25, 36, 49, 64, 81)

# 集合推导式
set_comp = {x * x for x in range(10)}
print(set_comp) # {0, 1, 64, 4, 36, 9, 16, 81, 49, 25}

# 字典推导式 : **这里需要键值对
dict_comp = {x: x * x for x in range(10)}
print(dict_comp) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

推导式中也可以包含判断条件

1
2
3
# 推导式中的条件表达式
list_comp = [x for x in range(10) if x % 2 == 0]
print(list_comp) # [0, 2, 4, 6, 8]

002-推导式(Comprehension)
https://jackiedai.github.io/2025/03/07/011Python/003Python推导式/
Author
lingXiao
Posted on
March 7, 2025
Licensed under