推导式的主要作用:化简代码,可以得用简单的代码得到有规律的列表、字典、集合
1.列表推导式
列表推导式用简单的代码得到一个列表,下面是列表推导式与非列表推导式的比较
'''
实现有规律的列表
'''
#while实现
str1='-'
list1=[]
i=0
while i<10:
list1.append(i)
i+=1
print(list1)
print(str1*20)
#for实现
list2=[]
for i in range(10):
list2.append(i)
print(list1)
print(str1*20)
#列表推导式
list3=[i for i in range(10)]#化简代码,列表中第一个i代表返回列表的值
print(list3)
带if的列表推导式
#目标:实现0到10 有规律的偶数列表
#1.if实现
list1=[]
for i in range(10):
if i%2==0:
list1.append(i)
print(list1)
#简单列表推导式实现
list1=[i for i in range(0,10,2)]
print(list1)
#带if的列表推导式实现
list1=[i for i in range(10) if i%2==0]
print(list1)
多个for循环列表推导式
#实现[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
#方法1 for循环嵌套
list1=[]
for i in range(1,3):
for j in range(0,3):
list1.append((i,j))
print(list1)
#方法2 while循环实现
list2=[]
i=1
j=0
while i<3:
while j <3:
list2.append((i, j))
j+=1
i+=1
print(list2)
#方法3 多for循环列表推导实现
list3=[(i,j)for i in range(1,3) for j in range(0,3)]
print(list3)
字典推导式
list1=['name','age','gender']
list2=['tom','20','man']
dict1={list1[i]:list2[i] for i in range(len(list1))}
print(dict1)
'''
注意:
当两个列表长度相同时,len()函数中的列表可以任取,当两个列表长度不相同时len()中取较短的列表
'''
#提取字典中的数据
#准备字典
count1={'MAP':200,"HP":203,'Dell':253,'leveo':183,'SUM':120}
#提取所有大于200的电脑品牌
hot =[keys for keys,values in count1.items()if values>200]#取到所有值大于200的key,返回一个列表
print(hot)
#取到所有值大于200的电脑品牌与销售量
hot1={keys:values for keys,values in count1.items() if values>200}#返回一个字字典
print(hot1)