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

    匿名函数

    1 匿名函数的定义

    python中使用lambda定义的函数即为匿名函数,它定义时没有自己的名字

    # 1、def用于定义有名函数
    # func=函数的内存地址
    def func(x,y):
        return x+y
    print(func)
    
    
    # 2、lamdab用于定义匿名函数
    # 定义匿名函数,下面一行代码即为匿名函数的内存地址
    lambda x,y:x+y
    

    2 定义匿名函数的格式

    lambda 参数1,参数2:表达式返回值

    3 匿名函数的调用

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

    以上两种方式都可以调用匿名函数,但是匿名函数基本不会这样使用

    匿名一般用于临时调用一次的场景:

    更多的是将匿名与其他函数配合使用

    4匿名函数使用实例

    4.1 分析过程

    salaries={
        'siry':3000,
        'tom':7000,
        'lili':10000,
        'jack':2000
    }
    # 需求1:找出薪资最高的那个人=》lili
    
    # max函数可以传入可迭代对象,得到最大值
    res=max([3,200,11,300,399])
    print(res)
    
    # 直接对字典使用会发现比较的是key大小,而不是value
    res=max(salaries)
    print(res)
    

    4.2 max,min配合匿名函数使用

    salaries={
        'siry':3000,
        'tom':7000,
        'lili':10000,
        'jack':2000
    }
    # 迭代出的内容    比较的值
    # 'siry'         3000
    # 'tom'          7000
    # 'lili'         10000
    # 'jack'         2000
    
    
    # ========================max的应用
    
    # 不使用匿名函数
    def func(k):
        return salaries[k]
    res=max(salaries,key=func) # 返回值=func('siry')
    print(res)
    
    # 使用匿名函数
    res=max(salaries,key=lambda k:salaries[k])
    print(res)
    
    
    # ========================min的应用
    res=min(salaries,key=lambda k:salaries[k])
    print(res)
    
    
    
    
    

    4.3 sorted配合匿名函数使用

    # ========================sorted排序
    salaries={
        'siry':3000,
        'tom':7000,
        'lili':10000,
        'jack':2000
    }
    res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
    print(res)
    

    4.4 map配合匿名函数使用

    # ========================map的应用(映射)
    l=['alex','lxx','wxx','薛贤妻']
    
    new_l=(name+'_dsb' for name in l)
    print(new_l)
    
    res=map(lambda name:name+'_dsb',l)
    print(res) # 生成器
    

    4.5 filter配合匿名函数使用

    # ========================filter的应用(过滤筛选)
    l=['alex_sb','lxx_sb','wxx','薛贤妻']
    res=(name for name in l if name.endswith('sb'))
    print(res)
    
    res=filter(lambda name:name.endswith('sb'),l)
    print(res)
    

    4.6 reduce配合匿名函数使用

    # ========================reduce的应用
    from functools import reduce	# python 3中需导入,python2可以直接使用reduce()
    res=reduce(lambda x,y:x+y,[1,2,3],10) # 可以设定初始值:10
    print(res)
    # 16
    
    res=reduce(lambda x,y:x+y,['a','b','c']) 
    print(res)
    # abc
    
  • 相关阅读:
    [蓝桥] 基础练习 数列排序(java)
    关不掉之以假乱真
    关不掉.vbs
    1.3内置数据类型
    1.2成员变量+类变量+static关键字
    1.1变量+命名规则
    Java 大数任意进制转换
    打印十字图
    c语言求最大公约数和最小公倍数
    核桃的数量
  • 原文地址:https://www.cnblogs.com/achai222/p/12577764.html
Copyright © 2011-2022 走看看