1列表推导式(列表生成式)
作用:用一个表示式创建一个有规律的列表或者控制一个有规律的列表
# 需求:创建一个0-10的列表
# (1)while循环实现
list1=[]
i=0
while i<10:
list1.append(i)
i+=1
print(list1) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# (2)for循环实现
list2=[]
for j in range(0,10,1):
list2.append(j)
print(list2) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# (3)列表推导式写法
list3=[x for x in range(10)]
print(list3) ##[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.2 带if的列表推导式
# 需求:创建0-10的偶数列表
# (1) range步长实现
list1=[i for i in range(0,10,2)]
print(list1) #[0, 2, 4, 6, 8]
# (2)for循环加if创建有规律的列表
list2=[]
for i in range(10):
if i%2==0:
list2.append(i)
print(list2) #[0, 2, 4, 6, 8]
# (3)把for循环配合if的代码改写成带if的列表推导式
list3=[i for i in range(10) if i%2==0]
print(list3) #[0, 2, 4, 6, 8]
1.3 多个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)
# 多个for循环实现列表推导式
list3=[(x,m) for x in range(1,3) for m in range(0,3)]
print(list3)
2.字典推导式
作用:快速合并列表为字典或提取字典中目标数据
(1)创建一个字典
# (1)创建一个字典
#创建字典key为1-5的数字,v是这个数字的平方
dict1={
i:i**2 for i in range(1,5,1)}
print(dict1) #{1: 1, 2: 4, 3: 9, 4: 16}
(2)将两个列表合并为一个字典
注意:
A:如果两个列表数据个数相同,len统计任何一个列表的长度都可以
B:如果两个列表数据个数不相同,len统计数据多的列表数据个数会报错,如果len统计列表数据少的不会报错
# (2)将两个列表合并为一个字典
list1=['name','age','sex']
list2=['liming','10','man']
dict1={
list1[i]:list2[i] for i in range(len(list1))}
print(dict1) #{'name': 'liming', 'age': '10', 'sex': 'man'}
(3)提取字典中的目标数据
# (3)提取字典中的目标数据
# 需求:提取成绩大于80的字典数据
dict1={
'liming':89,'lily':78,'zhangsan':56,'lisi':90}
dict2={
key:value for key,value in dict1.items() if value>=80}
print(dict2) #{'liming': 89, 'lisi': 90}
3.集合推导式
# 需求:创建一个集合,数据为下方列表的2次方
list1=[1,3,4,3]
set1={
i**2 for i in list1}
print(set1) #{16, 1, 9}(具有去重功能)