推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。它强大且简洁的语法,适用于生成列表、字典、集合和生成器。
1 [返回值 if 判断条件 else 处理操作 for i in 序列... if 判断条件...] 1 2 lst = [i for i in range(1,10)]#创建[1,2,3,4,5,6,7,8,9] 筛选出偶数:
1 2 lst = [i for i in range(1,10) if i % 2 == 0]# 创建集合 [2,4,6,8] ⚠️ 特别注意:因为是筛选条件所以只能用
if不能用elif,else。
生成全部排列
1 2 lst = [m+n for m in 'ABC' for n in 'XYZ']# ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] ⚠️ 注意:三层及三层以上的循环就很少用到了。
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
1 2 3 d = {'x': '1', 'y': '2', 'z': '3'}[k + '=' + v for k, v in d.items()]# ['x=1', 'y=2', 'z=3'] 1 2 3 lst = ['Bob', 'Lily', 'WangTao']{n:len(n) for n in lst}# {'Bob': 3, 'Lily': 4, 'WangTao': 7} 1 2 st = {i**2 for i in (1, 2, 3)}# {1, 4, 9} 1 2 g = (i for i in range(10))# <generator object <genexpr> at 0x0000014403FC3850> ⚠️ 注意:生成的不是元组(tuple),是生成器(generator)
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)]