推导式
python中,只有列表、字典、集合有推导式。
推导式的作用:化简代码
一、列表推导式
列表推导式作用:用一个表达式创建或控制一个有规律的列表。
1.1 例
需求:创建一个0-5的列表
(1)用while循环实现:
list1 = []
i = 0
while i < 6:
list1.append(i)
i += 1
print(list1) #[0, 1, 2, 3, 4, 5]
(2)for循环实现
list1 = []
for i in range(6):
list1.append(i)
print(list1)
(3)列表推导式实现
list1 = [i for i in range(6)] #第一个i是列表推导式的返回值
print(list1)
1.2 带if的列表推导式
需求:创建0-10的偶数列表
(1)range()步长实现
list1 = [i for i in range(0, 10, 2)]
print(list1)
(2)if实现
list1 = [i for i in range(10) if i % 2 ==0]
print(list1)
1.3 多个for循环实现列表推导式
多for循环的列表推导式等同于循环嵌套。
需求:创建列表如下:
[(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)]
print(list1)
二、字典推导式
字典推导式作用:快速合并列表为字典或提取字典中目标数据。
2.1 例
1.需求:创建一个字典,key是1-5数字,value是这个数字的2次方。
dict1 = {i: i**2 for i in range(1, 6)} #i: i**2是字典推导式的返回值
print(dict1)
2.2字典推导式合并字典
2.需求:将两个列表合并为一个字典
list1 = ['name', 'age', 'gender']
list2 = ['Lily', '18', 'girl']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
#由于两个列表数据个数相同,所以可以是len(list1)也可以是len(list2)或数字3
print(dict1)
- 如果两个列表数据个数一样,len统计任何一个列表的长度都可以;
- 如果两个列表数据个数不一样,len统计数据多的列表数据会报错,len统计列表数据个数少的不会报错.
2.3 字典推导式提取目标数据
需求:统计成绩及格和优秀的人一共有几个
counts = {'优秀': 10, '及格': 15, '不及格': 5}
count1 = {key: value for key, value in counts.items() if key == '优秀' or key == '及格'}
print(count1) #{'优秀': 10, '及格': 15}
三、集合推导式
需求:创建一个集合,数据为下方列表的二次方
list1 = [1, 1, 2]
list1 = [1, 1, 2]
set1 = {i**2 for i in list1}
print(set1)
#{1, 4} 集合有去重功能