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

     

    1、概念介绍

    python 使用 lambda 来创建匿名函数。

    lambda只是一个表达式,函数体比def简单很多。

    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

    2、语法

    语法:lambda [arg1 [,arg2,.....argn]]: expression

    lambda x, y : x * y

    3、Reduce

    传给reduce中的函数func() (必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。

    from functools import reduce

    l = [1,2,3,4,5]

    print(reduce(lambda x,y: x+y, l))

    # 这里代表着,把l中的值,一个个放进lamda的x,y中

    # 如果你给出一个初始值,可以放在l后面

    print(reduce(lambda x,y: x+y, l, 10))

    # 这样,x开始的时候被赋值为10,然后依次把l中的值放进来

    4、Map

    格式:map(func, seq1[, seq2...] )

    Python函数式编程中的map()函数是将func作用于seq中的每一个元素,并用一个列表给出返回值。

    l = [1,2,3]

    new_list = list(map(lambda i: i+1, l))

    print(new_list)

    >>> [2,3,4]

    # 我们也可以把两个数组搞成一个单独的数组

    l = [1,2,3]

    l2 = [4,5,6]

    new_list = list(map(lambda x,y: x+y, l, l2))

    print(new_list)

    >>>[5, 7, 9]

    5、Filter

    和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    l = [100, 20, 24, 50, 110]

    new = list(filter(lambda x: x<50, l))

    print(new)  

    >>> [20, 24]

  • 相关阅读:
    Logback的配置说明
    BAT批处理修改MSDOS窗口标题、大小、字体及背景颜色
    Java修饰符public,private,protected及默认的区别
    Class loading problem regarding ear's lib directory
    MySQL开发规范
    学习如何用自己的 appender 来扩展 log4j 框架
    指令重排、内存屏障概念解析
    高性能线程间队列 DISRUPTOR 简介
    Log4j2的性能为什么这么好?
    java多线程
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10036783.html
Copyright © 2011-2022 走看看