作用:简化代码量
1. 列表推导式
2. 字典推导式
3.集合推导式
一、 列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律列表
1.1 体验:
# 需求:创建一个0-10的列表 # while循环实现 # 准备一个空列表 list1 = [] # 书写循环,一次追加数字到空列表中 i = 0 while i < 10: list1.append(i) i += 1 # 结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list1) # for循环实现 list2 = [] for i in range(10): list2.append(i) # 结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list2) # 列表推导式 # 第一个i是for循环的返回值 list3 = [i for i in range(10)] # 结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list3)
1.2 带if的列表推导式
# 需求:0-10偶数数据的列表 # 1.简单列表推导式,range步长 list1 = [i for i in range(0, 10, 2)] # 结果:[0, 2, 4, 6, 8] print(list1) # 2.for循环加if创建有规律的列表 list2 = [] for i in range(10): if i % 2 == 0: list2.append(i) # 结果:[0, 2, 4, 6, 8] print(list2) # 3.把for循环配合if的代码,改写带if的列表推导式 list3 = [i for i in range(10) if i % 2 == 0 ] # 结果:[0, 2, 4, 6, 8] print(list3)
1.3 多个for循环实现列表推导式
# 需求:创建列表如下:【(1,0),(1,2),(1,3),(2,0),(2,1),(2,2)】 # for嵌套 list1 = [] for i in range(1, 3): for j in range(3): list1.append((i, j)) # 结果:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] print(list1) # 多个for实现列表推导式 list2 = [(i, j) for i in range(1,3) for j in range(3)] # 结果:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] print(list2)
二、 字典推导式
作用:快速合并列表为字典或提取字典中目标数据
# 创建一个字典,字典key是1-5数字,value是这个数字的2平方 dict1 = {i: i**2 for i in range(1, 5)} # 结果:{1: 1, 2: 4, 3: 9, 4: 16} print(dict1) # 合并列表为字典------------------------------ list1 = ['name', 'age', 'gender', 'id'] list2 = ['abf', '18', 'man'] dict2 = {list1[i]: list2[i] for i in range(len(list2))} {'name': 'abf', 'age': '18', 'gender': 'man'} print(dict2) # 总结: # 1. 如果两个列表数据个数相同,len统计任何一个列表的长度都可以 # 2. 如果两个列表数据个数不同,len统计数据多的列表数据个数会报错,len统计数据少的列表数据个数不会报错 # 提出字典中目标数据-------------------------------------- counts ={'MBP': 260, 'HP': 156, 'DELL': 300, 'LENOVO': 120, 'acer': 166} # 需求:提取电脑台数大于等于200 # 获取所有键值对数据,判断V值大于等于200,返回 dict3 = {key: value for key, value in counts.items() if value >= 200} # 结果:{'MBP': 260, 'DELL': 300} print(dict3)
三、 集合推导式
# 需求:创建一个集合,数据为下方列表的2次方 list1 = [1, 1, 2] set1 = {i ** 2 for i in list1} # 结果:{1, 4} print(set1) # 注意:集合有数据去重功能
标签:推导,生成式,list1,列表,range,print,list2 From: https://www.cnblogs.com/yz-b/p/16644814.html