Python学习笔记(十三)
一、推导式
在Python中,只有列表、字典、集合有推导式。推导式可以用来化简代码。
1.列表推导式(列表生成式)
作用:用一个表达式创建一个有规律的列表或者控制一个有规律的列表。
需求:创建一个0-10的列表。
# 需求:创建0 1 2 ...9的列表,以下介绍三种方法:
# while循环实现--------
list1 = []
i = 0
while i < 10:
list1.append(i)
i += 1
print(list1)
# for循环实现-------
list2 = []
for i in range(10):
list2.append(i)
print(list2)
# 列表推导式实现-------
list3 = []
list3 = [i for i in range(10)]
print(list3)
由上面三种方法看出来,列表推导式的代码量最少。
1.2 带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)
1.3 多个for循环实现列表推导式
多个for循环实现列表推导式=for循环嵌套
需求:创建列表如下:
[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
代码如下:
# for循环嵌套
list1 = []
for i in range(1,3):
for j in range(0,3):
list1.append((i,j))
print(list1)
#列表推导式
list2 = [(i,j) for i in range(1,3) for j in range(0,3)]
print(list2)
1.字典推导式
例1:需求:字典key是1-5数字,value是这个数字的2次方。
# 例1:需求:字典key是1-5数字,value是这个数字的2次方。
dict1 = {i:i**2 for i in range(1,5,1)}
print(dict1)
结果截图:
例2:需求:快速合并两个列表为字典。
# 例2:需求:快速合并两个列表为字典。
# 情况一:两个列表单词个数相同
list1 = ['name','age','gender']
list2 = ['Tom',19,'男']
dict1 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict1)
# 情况二:如果两个列表数据个数不同,len()统计数据多的的列表数据个数会报错。
list3 = ['name','age','gender','ID']
list4 = ['Tom',19,'男']
dict2 = {list3[i]:list4[i] for i in range(len(list4))}
print(dict2)
例3:需求:提取字典中指定的目标数据。
# 例3:需求:提取字典中指定的目标数据。
counts = {'MBP':268,'HP':125,'DELL':201,'lenovo':199,'acer':99}
# 需求:提取电脑台数大于等于200的
dict3 = {key:value for key,value in counts.items() if value >= 200}
print(dict3)
3.集合推导式
需求:创建一个集合,数据为下方列表的2次方。
list1 = [1,1,2]
代码如下:
list1 = [1,1,2]
set1 = {i**2 for i in list1 }
print(set1) #{1,4} *注意集合有去重功能