主要内容 #
字典推导表达式的定义
字典推导表达式:zip
字典推导表达式:函数
1. 字典推导表达式的定义 #
字典推导表达式是将一个或者多个对象(实际上适用于任何可迭代对象)转换成一个字典的工具。
在转换的过程中,可以按自己的需求将元素按照规则来转换到字典中。
编译器会优化字典推导表达式,不会因为简写而影响效率,
反而优化提升效率;减少代码量,可读性强,工作量降低,减少出错
2. 字典推导表达式:zip #
字典推导表达式中可以使用zip函数,语法如下:
dict1={a:b for a, b in zip(list_a, list_b)}
功能:
将两个迭代对象(list_a和list_b)中的元素逐一按表达式(a:b)进行操作,最终得到字典,并赋值给变量dict1
等价于:
dict1 ={}
for a,b in zip(list_a, list_b):
dict1[a] = b
程序示例:
name = ["小明" , "莉莉", "大雄"]
Chinese = [85 , 96, 80]
score = {key1: key2 for key1,key2 in zip(name, Chinese)}
print(score)
#等价于以下方法:
'''
score = dict()
for key1,key2 in zip(name, Chinese):
score[key1] = key2
print(score)
'''
3. 字典推导表达式:函数 #
字典推导表达式中可以使用函数,语法如下:
dict1={a: f(a) for a in list_a}
功能:
将一个迭代对象()list_a中的元素逐一按表达式f(a)进行操作,最终得到字典,并赋值给变量dict1
等价于:
dict1 = {}
for a in list_a:
dict1[a] = f(a)
程序示例:
给定20以内的数字,获取其平方,存在字典里
score = {i: i**2 for i in range(20)}
print(score)
#等价于以下方法:
'''
score = dict()
for i in range(20):
score[i] = i**2
print(score)
'''
使用lambda函数的方法:
name = ["张小明" , "王莉莉", "李大雄"]
last_name = {i:i[0] for i in name} # 获取姓
print(last_name)
使用函数的方法:
def is_pass(score):
if score>=60:
return "及格"
else:
return "不及格"
Chinese = [85 , 96, 50]
pass1 = {score: is_pass(score) for score in Chinese} #判断是否及格
print(pass1)
3. 小结 #
字典推导表达式是将一个或者多个对象(实际上适用于任何可迭代对象)转换成一个字典的工具
字典推导表达式中使用函数的方法
OJ训练题 #
1、分段函数 – ★
2、digit函数 – ★
3、求无暇素数 – ★★
4、递归函数 – ★★★
5、亲密数对 – ★★★