文章目录
157_了解推导式
推导式
目标:
- 列表推导式
- 字典推导式
- 集合推导式
一、列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。
列表推导式又叫列表生成式。
158_while循环创建有规律的列表
需求:创建一个0-10的列表。
while循环实现创建有规律的列表,代码实现如下所示:
#需求:0,1,2,3,4....
#1.循环实现 2.列表推导式(化简代码:创建或控制有规律的列表)
"""
1.1 创建空列表
1.2 循环将有规律的数据写入到列表
"""
list1 =[]
i =0
while i <10:
list1.append(i)
i +=1
print(list1)
运行结果:
159_for循环创建有规律的列表
for循环实现创建有规律的列表,代码实现如下所示:
#需求:0,1,2,3,4....
#1.循环实现 2.列表推导式(化简代码:创建或控制有规律的列表)
"""
1.1 创建空列表
1.2 循环将有规律的数据写入到列表
"""
#while实现----------
# list1 =[]
# i =0
# while i <10:
# list1.append(i)
# i +=1
# print(list1)
#for实现---------
list1 =[]
for i in range(10):
list1.append(i)
print(list1)
运行结果:
160_体验列表推导式
列表推导式实现创建有规律的列表,代码如下所示:
#需求:0,1,2,3,4....
#1.循环实现 2.列表推导式(化简代码:创建或控制有规律的列表)
"""
1.1 创建空列表
1.2 循环将有规律的数据写入到列表
"""
#while实现----------
# list1 =[]
# i =0
# while i <10:
# list1.append(i)
# i +=1
# print(list1)
#for实现---------
# list1 =[]
# for i in range(10):
# list1.append(i)
# print(list1)
#列表推导式实现---------
list1 =[i for i in range(10)]
print(list1)
运行结果:
160_带if的列表推导式
需求:创建0-10的偶数列表
- 方法一:range()步长实现
- 方法二:If实现
#需求:0-10偶数数据的列表
#1.简单列表推导式 range步长
list1 =[i for i in range(0,10,2)]
print(list1)
#2.for循环加if 创建有规律的列表
list2 =[]
for i in range(10):
if i % 2 ==0:
list2.append(i)
print(list2)
#3.把for循环配合if的代码 改写 带if的列表推导式
list3 =[i for i in range(10) if i %2 ==0]
print(list3)
运行结果:
161_多for实现列表推导式
需求:创建列表如下
[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
多for实现列表推导式的情况如下所示:
#数据1: 1 和2 range(1,3)
#数据2: 0,1,2 range(3)
list1 =[]
for i in range(1,3):
for j in range(3):
#列表里面追加元组:循环前准备一个空列表,然后这里追加元组数据到列表
list1.append((i,j))
print(list1)
#多个for实现列表推导式
list2 =[(i,j) for i in range(1,3) for j in range(3)]
print(list2)
#多for的列表推导式等同于for循环嵌套
运行结果:
162_体验字典推导式
思考:如果有如下两个列表:
list1 =['name','age','gender']
list2 =['Tom',20,'man']
如何快速合并为一个字典?
答:字典推导式
字典推导式作用:快速合并列表为字典或提取字典中目标数据。
快速体验:
1.创建一个字典:字典key是1-5数字,value是这个数字的3次方。
#创建字典 key是1-5的数字,value是这个数字的3次方
#dict1 ={k:v for i in range(1,5)}
dict1 ={i:i**3 for i in range(1,5)}
print(dict1)
运行结果:
164_合并两个列表为字典
将两个列表合并为一个字典,代码实现如下所示:
list1 = ['nmae','age','gender']
list2 = ['gaozhenyang',20,'man']
dict1 ={list1[i]:list2[i] for i in range(len(list2))}
print(dict1)
运行结果:
当Key值的数据个数和value值的数据个数不同时,len函数统计数据多的列表数据个数情况如下所示:
list1 = ['nmae','age','gender','id']
list2 = ['gaozhenyang',20,'man']
dict1 ={list1[i]:list2[i] for i in range(len(list1))}
print(dict1)
运行结果:
当Key值的数据个数和value值的数据个数不同时,len函数统计数据少的列表数据个数情况如下所示:
list1 = ['nmae','age','gender','id']
list2 = ['gaozhenyang',20,'man']
dict1 ={list1[i]:list2[i] for i in range(len(list2))}
print(dict1)
#总结:
#1.如果两个列表数据个数相同,len统计任何一个列表的长度都可以
#2.如果两个列表数据个数不同,len统计数据多的列表数据个数会报错;len统计数据少的列表数据个数不会报错
运行结果:
165_提取字典中目标数据
需求:提取上述电脑数量大于等于200的字典数据
counts ={'MBP':268,'HP':125,'DELL':201,'Lenovo':199,'acer':99}
#1.需求:提取电脑台数大于等于200
#2.获取所有键值对数据,判断value值是否大于等于200,并返回字典数据
print(counts.items())
dict1 ={key:value for key,value in counts.items() if value >=200}
print(dict1)
运行结果:
166_集合推导式
需求:创建一个集合,数据为下方列表的2次方。
list1 =[1,1,2]
list1 =[1,1,2]
set1 ={i**2 for i in list1}
print(set1)
#集合有去重功能,所以这个集合数据只有两个返回结果分别是1,4
运行结果:
注意:集合有数据去重功能。
167_推导式知识点总结
- 推导式的作用:简化代码
- 推导式写法
#列表推导式
[xx for xx in range()]
#字典推导式
{xx1:xx2 for ...in ...}
#集合推导式
{xx for xx in ...}