跳至正文
View Categories

1 min read

主要内容 #

  • 字典推导表达式的定义
  • 字典推导表达式: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、亲密数对 – ★★★