• Python 匿名函数与内置函数


    一、匿名函数
    没有名字的函数

    语法:
        lambda 参数: 返回值
        lambda :
    
    例如:lambda x,n:x**n 
    f = lambda x,n:x**n
    f(2,3)
    >>>8
    
    注意:
    匿名函数需要一次性使用。
    匿名函数单独使用毫无意义,它必须配合 “内置函数” 一起使用的才有意义。
    
    # 有名函数
    def func():   #func --->内存地址
        return 1
    print(func())  # func函数对象 + ()   即调用
    
    # 匿名函数:
    # 匿名(), return 已经自动添加了
    # lambda 匿名(): return 1
    func = lambda : 1
    print(func())   # 1
    
    func = lambda : 1
    print()
    

    二、内置函数
    内置函数:python内部提供的自带的内置方法
    如:range,print,len,max,min,sorted,map,filter

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

    max内部会将可迭代对象中的每一个值取出,并且进行判断
    list1 = [1,2,3,4,5]
    print(max(list1))  
    >>>5
    
    # 需求: 获取dict1中薪资最大的人的 名字
    dict1 = {
        'tank': 1000,
        'egon': 500,
        'sean': 200,
        'jason': 100
    }
    print(max(dict1, key=lambda x: dict1[x]))
    >>>tank
    

    sorted: 默认升序(从小到大) reverse:反转 reverse默认是False

    list1 = [10, 2, 3, 4, 5]
    print(sorted(list1))
    print(sorted(list1, reverse=True))     # reverse=True--> 降序
    
    
    dict1 = {
        'tank': 100,
        'egon': 500,
        'sean': 200,
        'jason': 50
    }
    # new_list = ['egon', 'sean', 'tank', 'jason']
    new_list = sorted(dict1, key=lambda x: dict1[x], reverse=True)
    print(new_list)
    
    

    map: 映射

    语法:map(函数地址, 可迭代对象) ---> map对象
    	 map会将可迭代对象中的每一个值遍历取出,并且按照指定的规则映射到一个map对象中,
    	 可以再将map对象转换成列表/元组。
    	 注意: 只能转一次。
    
    如:
    name_list = ['egon', 'jason', 'sean',  'tank']
    map_1 = (map(lambda x : x + '喜欢吃生蚝' if x == 'tank' else x + '_DJB',name_list))
    print(map_1)   # map_1 是一个map对象  即<map object at 0x00000177C926FB48>
    print(list(map_1))   #转成列表  map_1-->生成器--->用完后,就不能再取了
    #print(tuple(list(map_1)))   #是一个空元组
    
    

    reduce: 合并

    from functools import reduce
    
    	-每次从可迭代对象中获取两个值进行合并,并且可以设置初始值	
    	-语法:reduce(lambda x, y: x + y, range(1, 101), 0)
    	
    # 需求: 求1——100的和
    res = reduce(lambda x, y: x + y, range(1, 101), 1000)
    print(res)  # 6050
    

    filter:过滤

    语法:filter(函数地址,可迭代对象)
    	  filter_obj = filter(lambda x: x, name_list)
    	  filter会将可迭代对象中的值遍历取出,然后通过判断,把条件成立 “过滤获取”出来的值添加到 filter对象中
    	
    name_list = ['egon_dsb', 'jason_dsb','sean_dsb', 'tank']	
    filter_obj = filter(lambda name: name.endswith('_dsb'), name_list)  #filter_obj是一个filter对象
    print(filter_obj)   #<filter object at 0x0000016CC5A5ED48>
    print(list(filter_obj))  #转成列表
    # print(tuple(filter_obj))  #['egon_dsb', 'jason_dsb', 'sean_dsb']
    
  • 相关阅读:
    final/override控制
    高效遍历图像
    快速初始化成员变量
    C++ boost.python折腾笔记
    百亿数据毫秒响应级交易系统读写分离存储数据设计
    解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
    生产应用常见坑
    spring AOP应用
    springmvc No mapping found for HTTP request with URI in Dispatc
    myeclipse使用maven插件进行maven install时报错check $m2_home environment variable and mvn script match
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12143045.html
Copyright © 2020-2023  润新知