当前位置:首页>python>Python小技巧——推导式

Python小技巧——推导式

  • 2026-09-02 17:06:43
Python小技巧——推导式

本期目标

  • 掌握列表推导式
  • 能综合运用推导式,解决实际问题

一、什么是推导式

推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。它强大且简洁的语法,适用于生成列表、字典、集合和生成器。

二、 推导式——让程序会“更简洁”

1、基础语法

1
[返回值 if 判断条件 else 处理操作 for i in 序列... if 判断条件...]

2、列表推导式

1
2
lst = [i for i in range(1,10)]#创建[1,2,3,4,5,6,7,8,9]

3、推导式判断

筛选出偶数:

1
2
lst = [i for i in range(1,10) if i % 2 == 0]# 创建集合 [2,4,6,8]

⚠️ 特别注意:因为是筛选条件所以只能用if不能用elif,else。

4、推导式两层循环

生成全部排列

1
2
lst = [m+n for m in 'ABC' for n in 'XYZ']# ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

⚠️ 注意:三层及三层以上的循环就很少用到了。

5、推导式前的if...else...

1
2
lst = [i if i < 5 else i+10 for i in range(1,10) ]# [1, 2, 3, 4, 15, 16, 17, 18, 19]

⚠️ 注意: for前面的部分是一个表达式,它必须根据x计算出一个结果。因此,考察表达式:i if i < 5,它无法根据x计算出结果,因为缺少else,必须加上else

6、推导多个变量

1
2
3
d = {'x': '1', 'y': '2', 'z': '3'}[k + '=' + v for k, v in d.items()]# ['x=1', 'y=2', 'z=3']

7、 字典推导式

1
2
3
lst = ['Bob', 'Lily', 'WangTao']{n:len(n) for n in lst}# {'Bob': 3, 'Lily': 4, 'WangTao': 7}

8、集合推导式

1
2
st = {i**2 for i in (1, 2, 3)}# {1, 4, 9}

9、生成器推导式

1
2
g = (i for i in range(10))# <generator object <genexpr> at 0x0000014403FC3850>

⚠️ 注意:生成的不是元组(tuple),是生成器(generator)

三、总结

  • 一种非常强大且优雅的语法结构,它允许我们以简洁、易读的方式生成和操作列表
  • 当列表推导式中的逻辑较为复杂时,调试可能会变得困难
  • 列表推导式只能按照特定的算法逻辑来运行,不够灵活

四、动手练习

练习1

list中既包含字符串,又包含整数。将列表中所有字符串提取出来,并转换为大写。

1
L1 = ['Hello', 'World', 123, None, 789]
👆 点击查看参考答案
1
2
L1 = ['Hello', 'World', 123, None, 789]L2 = [x if not isinstance(x, str) else x.upper()  for x in L1 if  isinstance(x, str)]

最新文章

随机文章