推导式是可以从一个数据序列构建另一个新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体.
列表推导式
对比普通语法,创建一个0-9的列表,我们可以用while和for循环两种方式
list1 = []# 2. 书写循环,依次追加数字到空列表list1中
i = 0
while i < 10:list1.append(i)i += 1
list1 = []
for i in range(10):list1.append(i)
列表推导式基本语法:
变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]
变量名 = [表达式 for 变量 in 列表 if 条件]
list1 = [i for i in range(10)]
print(list1)
# 用列表推导式创建列表
案例2:创建一个0-9的偶数列表
# 方法一:range()步长实现
list1 = [i for i in range(0, 10, 2)]# 方法二:if实现
list1 = [i for i in range(10) if i % 2 == 0]
案例3:创建列表 => [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
list1 = [(i, j) for i in range(1, 3) for j in range(3)]
字典推导式
案例1:创建一个字典:字典key是1-5数字,value是这个数字的2次方
dict1 = {i: i**2 for i in range(1, 5)}
print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}
案例2:将两个列表合并为一个字典
list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)
案例3:提取字典中目标数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}# 需求:提取上述电脑数量大于等于200的字典数据
count1 = {key: value for key, value in counts.items() if value >= 200}
print(count1) # {'MBP': 268, 'DELL': 201}
集合推导式跟列表推导式非常相似,唯一区别在于用 { } 代替 [ ]