• 匿名函数


    匿名函数

    有名函数

    之前我们讲的函数都是又名函数,它是通过函数名来进行调用的

    def f1():
        print('from f1')
        
    f1()
    f1()
    
    from f1
    from f1
    

    匿名函数

    匿名函数就是没有名字的函数,只能使用一次

    res = (lambda x,y:x+y)(3,1)
    print(res)
    
    4
    

    与内置函数联用

    匿名函数通常与max()min()sorted()filter()map()方法联用

    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    
    1. 如果我们需要从上面的字典中取出薪资最高人的姓名,我们可以使用max()方法,但max()比较的是key

      1. 首先将可迭代对象变成迭代器对象
      2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
    # 方法一/不可行
    
    print(max(salary_dict))  # 这个比较的是key
    
    # 方法二/可行
    def func(k):
        return salary_dict[k]
    
    print(max(salary_dict, key=func))
    
    # 方法三/一行解决问题
    
    print(max(salary_dict, key=lambda name: salary_dict[name]))
    
    tank
    jason
    jason
    
    1. 取出薪资最低的人的名字,使min()方法

      1. 首先将可迭代对象变成迭代器对象
      2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
    print(min(salary_dict, key=lambda name: salary_dict[name]))
    
    sean
    
    1. 对薪资进行排序,使用sorted()方法

      1. 首先将可迭代对象变成迭代器对象
      2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
    print(sorted(salary_dict,key=lambda name :salary_dict[name],reverse=True))
    
    ['jason', 'tank', 'nick', 'sean']
    
    1. map()是对容器元素里的元素进行处理

      1. 首先将可迭代对象变成迭代器对象
      2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做map()方法的结果之一
    name_list = ['hades','bonnie','zhuping','yang']
    res = map(lambda name:f'{name} handsome' if name == 'hades'else name, name_list)
    print(list(res))
    
    ['hades handsome', 'bonnie', 'zhuping', 'yang']
    
    1. filter()是对容器元素里的元素进行筛选

      1. 首先将可迭代对象变成迭代器对象
      2. res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下
    name_lis = ['hades handsome', 'bonnie', 'zhuping', 'yang']
    res = filter(lambda name:not name.endswith('handsome'), name_lis)
    print(list(res))
    
    ['bonnie', 'zhuping', 'yang']
  • 相关阅读:
    Java: Regular Expressions
    Java: Checked & Unchecked Exceptions
    二叉树的构建和层级打印
    [leetcode] 1032: Stream of Characters: Tries&AC自动机
    [leetcode] 1503: Previous Permutation With One Swap
    robot moving on the surface of a square
    killing rabbits
    Find the longest route with the smallest starting point
    [leetcode] Minimum Number of K Consecutive Bit Flips
    检测设备横屏 || 竖屏的状态
  • 原文地址:https://www.cnblogs.com/Hades123/p/11019546.html
Copyright © 2020-2023  润新知