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

    匿名函数

    对比使用def关键字创建的是有名字的函数,使用lambda关键字创建则是没有名字的函数,即匿名函数。

    语法: lambda 参数 : expression

    举例:

    lambda x,y : x + y
    #等同于
    def func(x,y):
    	return x + y
    
    #调用方式
    res = (lambda x,y : x + y)(1,2)
    >>3
    

    匿名函数的引用计数为0,使用一次就释放,只临时使用一次。

    匿名函数单独使用毫无意义,必须配合内置函数使用。

    内置函数

    python内部提供的内置方法

    max(可迭代对象):求最大值

    min():求最小值

    sorted():对可迭代对象进行排序,默认升序。当reverse = True 反转

    map(函数地址,可迭代对象):映射

    reduce(函数地址,可迭代对象,初始值(默认为0)):合并

    filter(函数地址,可迭代对象):过滤

    举例:

    #max求最大值
    list1 = [1,2,3,4,5]
    print(max[list1])
    >>>5
    
    
    #获取字典中薪资最大的人的名字  结合匿名函数
    salaries = {
        'lzn':100,
        'xxt':300,
        'yyh':200,
        'abc':500
    }
    #max(salaries) 直接用max进行比较,比较的是字典的key
    res = max(salaries, key= lambda x: salaries[x])
    #max会迭代字典salarie,每取出一个人名就会当作参数传给指定的匿名函数,然后将匿名函数的返回值当做比较依据,最终返回薪资最高的人名
    print(res)
    >>>'abc'
    
    
    #同理,将人名按照薪资大小进行排序
    sorted(salaries, key = lambda x: salaries(x))
    >>>['lzn', 'yyh', 'xxt', 'abc'] #升序排列
    sorted(salaries, key = lambda x: salaries(x),reverse = True)
    >>>['abc', 'xxt', 'yyh', 'lzn']
    
    
    
    #map() 将列表中的人的名字除了'lzn'都添加后缀_xjb
    name_list = ['lzn','xxt','yyh','abc']
    res = map(lambda name:name if name == 'lzn' else name + '_xjb',name_list)
    print(res)  #map对象
    print(list(res))
    >>>['lzn', 'xxt_xjb', 'yyh_xjb', 'abc_xjb']
    #map会将可迭代对象中的每一个值进行修改,然后映射到对象中
    #可以再将map对象转成列表/元组,但只能转一次
    
    
    #reduce() 求和运算,1-100的和
    from functools import reduce
    res = reduce(lambda x,y :x+y,range(1,101),0)
    print(res)
    >>>5050
    '''
    python3中,reduce被集成到模块functools中,需要导入才能使用
    在初始值为0时,reduce函数先迭代一次可迭代对象得到一个初始值,传给x,然后继续迭代得到第二个值传给y,得到运算结果,再将运算结果传给x,再迭代一次得到的值传给y......
    '''
    
    
    #filter()过滤 将列表中不带有_xjb的人名过滤
    name_list = ['lzn', 'xxt_xjb', 'yyh_xjb', 'abc_xjb']
    res = filter(lambda name: name.endswith('_xjb') ,name_list)
    print(res) # filter对象
    print(list(res))
    >>>['xxt_xjb', 'yyh_xjb', 'abc_xjb']
    '''
    filter会将函数中返回的结果为True对应的参数值过滤出来
    '''
    
  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/littleb/p/11866957.html
Copyright © 2011-2022 走看看