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

    1.lambda

    lambda 参数1,参数2,参数3,。。。。。:expression

    lambda x,y,z:x+y+z
    

    1.1 调用方式

    1.1.1 方式一

    res = lambda(x,y,z:x+y+z)(1,2,3) 直接赋值,直接得出结果

    1.1.2 方式二

    func = lambda x,y,z:x+y+z 
    res = func(1,2,3)
    

    匿名函数与有名函数有相同的作用域,但是匿名函数意味着引用计数为0,使用一次就释放,所以匿名函数用于临时使用一次的场景。

    2.内置函数 map min sort

    内置max与min都支持迭代器协议,工作原理都是迭代字典,取得是字典的键,因而比较的是键的最大和最小值,而我们想要的是比较值的最大值与最小值

    max(sarlaies,key=lambda k:salaries[k])
    min(sarlaies,key=lambda k:salaries[k])
    

    同理,我们直接对字典进行排序,默认也是按照字典的键去排序的

    sroted(salaries)
    

    迭代对象arrary=[1,2,3,4,5]

    • map:可以接收两个参数,一个是函数,另一个是可迭代对象,得到的仍然是迭代器
    res = map(lambda x:x**2,arry)
    
    • reduce: 可以接收3个参数,一个是参数,一个是可迭代对象,第三个是初始值
    python3中,reduce被集中到模块functools中,需要导入使用
    from functools import reduce
    res = reduce(lambda x,y:x+y,array)
    解析:
    1.没有初始值,reduce函数会先迭代一次arrary得到的值作为初始值,作为第一个值数传给x,然后继续迭代一次
    arrary,得到的值作为第二个值传给主,运算结果为3
    2.将上一次reduce运算的结果作为第一个值传给x,然后迭代一次arrary得到的结果作为第二个值 传给给y,依次
    类推,直到迭代完arrary的所有元素,得到最终的结果15
    
    • filter函数会依次迭代,得到的值依次传给匿名函数,如果匿名函数的返回值为真,则过滤出该元素,而filter函数得到的结果仍然是迭代器
    对arrary进行过滤操作,过滤出大于3的元素
    res = filter(lambda x:x>3,arrary)
    list(res)     4,5
    
  • 相关阅读:
    修改MyEclipse工作空间
    Servlet
    Java虚拟机类加载机制
    编译执行和解释执行
    awt和swing
    构造函数
    小知识点
    [剑指Offer]42-连续子数组的最大和/ [LeetCode]53. 最大子序和
    [剑指Offer]40-最小的k个数
    [剑指Offer]47-礼物的最大价值(DP)
  • 原文地址:https://www.cnblogs.com/xiaoxuanworking/p/14354957.html
Copyright © 2011-2022 走看看