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对应的参数值过滤出来
    '''
    
  • 相关阅读:
    java实现土地测量
    java实现土地测量
    java实现土地测量
    java实现土地测量
    ajax异步获取数据后动态向表格中添加数据(行)
    jquery如何通过ajax请求获取后台数据显示在表格上
    Eclipse4.5在线安装Aptana插件及配置代码提示教程
    eclipse安装Aptana 插件,并设置使之能提示css,js,html,帮助编写代码
    jsp页面根据json数据动态生成table
    Jquery根据JSON生成Table
  • 原文地址:https://www.cnblogs.com/littleb/p/11866957.html
Copyright © 2011-2022 走看看