zoukankan      html  css  js  c++  java
  • 匿名函数

    匿名函数

    1.def用于定义有名函数

    # func = 函数的内存地址
    
    def func(x,y):
        return x,y
    print(func)

    2.lambda用于定义匿名函数

    print(lambda x,y:x+y)

    3.调用匿名函数

    lambda x,y:x+y只是一个内存地址,要加()才能调用

    # 方式1:
    
    res = (lambda x,y:x+y)(1,2)
    print(res)
    # 方式2:
    
    func = lambda x,y:x+y
    res = func(1,2)
    print(res)

    4.匿名函数用于临时调用一次的场景:更多的是将匿名函数与其他函数配合使用

    匿名函数的应用

    1.需求1:找出薪资最高的那个人 ==> lili

    salaries = {
        'siri': 3000,
        'tom': 7000,
        'lili': 10000,
        'jack': 2000
    
    }
    
    # res = max([2,144,7,999])
    # print(res)
    
    # res = max(salaries)        # 默认按照key排序
    # print(res)
    
    输出:tom
    salaries = {
        'siri': 3000,
        'tom': 7000,
        'lili': 10000,
        'jack': 2000
    
    }
    
    # 迭代出的内容    比较的值
    # 'siri'         3000
    # 'tom'          7000
    # 'lili'         10000
    # 'jack'         2000
    
    
    def func(k):
        return salaries[k]
    
    # =======max=======
    res = max(salaries, key=func)   # 返回值 = func('siri')
    print(res)
    
    # =======min=======
    res=min(salaries,key=lambda k:salaries[k])
    print(res)
    
    # =======sorted排序=======
    res = sorted(salaries,key=lambda k:salaries[k])
    print(res)

    map的应用

    l = ['alex', 'lxx', 'wxx', '薛贤奇']
    new_l = (name + 'dsb' for name in l)
    print(new_l)  

    生成器

    l = ['alex', 'lxx', 'wxx', '薛贤奇']
    res = map(lambda name:name + 'dsb',l)
    print(res)    # 生成器
    l = ['alex', 'lxx', 'wxx', '薛贤奇']
    # res = (name for name in l if name.endswith('sb'))
    # print(res)
    
    filter(lambda name:name.endwith('sb'),l)

    reduce的应用

    from functools import reduce
    
    res = reduce(lambda x,y:x+y,[1,2,3],10)     # 16
    print(res)
    
    res = reduce(lambda x,y:x+y,['a','b','c'],'Hello')     # Helloabc
    print(res)
    
    res = reduce(lambda x,y:x+y,['a','b','c'])     # Helloabc
    print(res)

    思维导图(点击链接

  • 相关阅读:
    计算三角形的周长和面积的类
    类的定义和继承
    简单类的定义和继承
    template <typename T>模板类定义
    字符串中取出数字字符串
    C++类定义 常量定义
    cogs1752[boi2007]mokia 摩基亚 (cdq分治)
    bzoj3262陌上花开 cdq分治入门题
    初入lambda表达式 (主要是c++11)
    空之境界
  • 原文地址:https://www.cnblogs.com/zhww/p/12983981.html
Copyright © 2011-2022 走看看