推导式
用一个表达式创建一个有规律的列表/字典/集合或者控制一个有规律的列表/字典/集合
tip:更有风格的python代码,化简代码
列表推导式:
# 一行即可创建
list = [返回值 for i in 遍历的序列]
list = [返回值 for i in 遍历的序列 if 判断式]
list1 = [i for i in range(0,11)]
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list1 = [i for i in range(11) if i%2==0] #带if判别式的推导式
print(list1) # [0, 2, 4, 6, 8, 10]
列表循环嵌套
需求:生成 [(1,0),(1,1),(1,2),(1,3),(2,0),(2,1),(2,2),(2,3)]
list1 = [(i,j) for i in range(1,3) for j in range(4)]
print(list1) # [(1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
字典推导式
生成一个key和value之间有规律的字段
需求:创建一个一个字典key:1-5,value : key的2倍
dict1 = {i:i*2 for i in range(1,6)}
print(dict1) # {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}
合并俩个列表成为字典
个数不一致的两个列表合并取值,选取个数少的列表个数
list1 =['Tom','23','175cm']
list2 = ['name','age','tall']
dict1 ={list2[i]:list1[i] for i in range(len(list2))}
print(dict1) # {'name': 'Tom', 'age': '23', 'tall': '175cm'}
提取字典中的目标数据
字典:count1 ={‘MAP’:280,‘HP’:125,‘DEL’:201,‘Lenovo’:199,‘acer’:99}
需求:提取其中value大于200的键值对
count1 ={'MAP':280,'HP':125,'DEL':201,'Lenovo':199,'acer':99}
# 提取其中value大于200的键值对
dict1 = {key:value for key,value in count1.items() if value>200}
print(dict1) # {'MAP': 280, 'DEL': 201}
集合推导式
# 一行即可创建
list = {返回值 for i in 遍历的序列}
# set = {xx for xx in ....}
list1 = [10,20,30,10,20,30,40,50,60]
set1 = {i for i in list1}
print(set1) # {40, 10, 50, 20, 60, 30}
print(type(set1)) # <class 'set'>