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对应的参数值过滤出来
    '''
    
  • 相关阅读:
    01、python数据分析与机器学习实战——Python可视化库Seaborn
    01、python数据分析与机器学习实战——Python可视化库Seaborn
    01、python数据分析与机器学习实战——Python可视化库Seaborn
    Sql Server增加字段、修改字段、修改类型、修改默认值 ALTER
    生产者/消费者模式的理解及实现
    生产者/消费者模式的理解及实现
    C# 通过Process.Start() 打开程序 置顶方法
    C# 通过Process.Start() 打开程序 置顶方法
    [C#.Net]判断文件是否被占用的两种方法
    VS2010启动多个实例调试
  • 原文地址:https://www.cnblogs.com/littleb/p/11866957.html
Copyright © 2011-2022 走看看