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
    
  • 相关阅读:
    Python3学习之路~0 目录
    HIVE简单操作
    HIVE的安装
    mysql在linux上的安装
    BZOJ 1085(IDA*)
    Codeforces 916E(思维+dfs序+线段树+LCA)
    Codeforces 396C (DFS序+线段树)
    Codeforces 609E (Kruskal求最小生成树+树上倍增求LCA)
    Codeforces 191C (LCA+树上差分算法)
    POJ 1905 题解(二分+几何)
  • 原文地址:https://www.cnblogs.com/xiaoxuanworking/p/14354957.html
Copyright © 2011-2022 走看看