当前位置:首页>python>小白学python第39天之列表集合字典推导式(上)

小白学python第39天之列表集合字典推导式(上)

  • 2026-10-21 13:28:39
小白学python第39天之列表集合字典推导式(上)

1.15

列表集合字典推导式(上)

?

学前疑惑

我们前面学过for循环跟while循环,那大家有没有想过,将这些循环换种形式写,使代码更简洁更优雅呢?

1

列表推导式

(1)什么是推导式

推导式(特别是列表推导式)是 Python 中一种强大且优雅的语法结构。共有三种推导:列表推导式、集合推导式、字典推导式。

[1,2,3]推导式[1,4,9]

(2)为什么需要推导式

推导式主要有以下几个好处:

1、代码简洁、可读性高

推导式能用一行代码完成多行循环才能实现的功能,将“创建新集合”的意图表达得非常清晰。例如,传统的过滤和映射操作被浓缩在一个直观的表达式里。

2、执行效率更高

由于其实现方式更贴近解释器底层,列表推导式在多数情况下的执行速度比普通的 for循环稍快。对于数据转换和过滤这类常见操作,使用推导式能获得一定的性能提升。

3、功能强大且表达力强

推导式不仅限于列表,还支持生成器、字典和集合。通过结合条件语句(if)和嵌套循环,可以用非常紧凑的语法实现复杂的数据处理逻辑,比如您之前看到的嵌套循环生成乘法表案例。

4、符合Python的哲学

它很好地体现了 Python “优雅、明确、简单”的设计哲学。推导式让代码的读写更接近于自然语言描述的逻辑,比如“一个由x的平方组成的列表,其中x来自某个范围且x为偶数”。

案例:创建一个0-9的列表

while循环:

# 初始化计数器i = 0list1 = []# 编写循环条件while i <= 9:    list1.append(i)    # 更新计数器    i += 1print(list1)

for循环:

list1 = []# 编写for循环for i in range(0, 10):    list1.append(i)print(list1)

(3)列表推导式

基本语法:

变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]变量名 = [表达式 for 变量 in 列表 if 条件]

案例:定义0-9之间的列表

list1 = []# 编写for循环for i in range(0, 10):    list1.append(i)print(list1)

列表推导式:

list1 = [i for i in range(10)]print(list1)

执行原理:[i for i in range(10)]

列表推导式先运行表达式右边的内容:当第一次遍历时:i = 0,其得到变量i的结果后,会放入最左侧的变量i中,这个时候列表中就是[0];当第二次遍历时:i = 1,其得到变量i的结果后,会追加最左侧的变量i中,这个时候列表中就是[0, 1]...当最后一次遍历时:i = 9,其得到变量i的结果后,会追加最左侧的变量i中,这个时候列表中就是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

(4)列表推导式 + if 条件判断

在使用列表推导式时候,我们除了可以使用for循环,其实我们还可以在其遍历的过程中,引入if条件判断。

变量 = [表达式 for 临时变量 in 序列 if 条件判断]等价于for 临时变量 in 序列:    if 条件判

案例:生成0-9之间的偶数(i%2==0)序列

list1 = [i for i in range(0,9) if i % 2 == 0]print(list1)

(5)for循环嵌套列表推导式

for 临时变量 in range(n):    for 临时变量 in range(n):

基本语法:

变量 = [表达式 for 临时变量 in 序列 for 临时变量 in 序列]

案例:

创建列表 => [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

分析:

原生代码:

list1 = []# 外层循环for i in range(1, 3):    # 内层循环    for j in range(0, 3):        tuple1 = (i, j)        list1.append(tuple1)print(list1)

列表推导式:

list1 = [(i, j) for i in range(1, 3) for j in range(0, 3)]print(list1)

今日学习完毕,课后作业:

使用for循环嵌套列表推导式,生成一个9*9乘法表。

最新文章

随机文章