• python中的lambda匿名函数和reduce、filter、map函数


    1 func=lambda x:x+1
    2 print(func(1))
    3 #2
    4 print(func(2))
    5 #3
    6 
    7 #以上lambda等同于以下函数
    8 def func(x):
    9     return(x+1)
    
    可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体。
    在这里lambda简化了函数定义的书写形式,使代码更为简洁.但是使用函数的定义方式更为直观,易理解
    (此处在python自带idle演示:)
    
     1 from functools import reduce 
     2 foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
     3 
     4 print (list(filter(lambda x: x % 3 == 0, foo)))
     5 #[18, 9, 24, 12, 27]
     6 
     7 print (list(map(lambda x: x * 2 + 10, foo)))
     8 #[14, 46, 28, 54, 44, 58, 26, 34, 64]
     9 
    10 print (reduce(lambda x, y: x + y, foo))
    11 #139
    
    
    关于filter、map、reduce函数
    
     ·filter()函数
    filter()函数包括两个参数,分别是function和list。
    该函数根据function参数返回的结果是否为真来过滤list参数中的项,
    最后返回一个新列表,如下例所示:(此处在cmd命令行演示)
    >>>a=[1,2,3,4,5,6,7]
    >>>b=filter(lambda x:x>5, a)
    >>>print b
    >>>[6,7]
    
    ·map()函数
    map()的两个参数:前面是函数名,后面是一个列表或元组,也可以是两个列表或元组。
    其意义是把前面的函数依次作用在后面的列表或元组上,得到一个新的可迭代对象,其
    返回值为<map object at 0x01085570>
    >>>a=[1,2,3,4,5,6,7]
    >>>map(lambda x:x+3, a) #这里的a同上
    >>>[3,4,5,6,7,8,9,10]
    
    #另一个例子
    >>>a=[1,2,3]
    >>>b=[4,5,6]
    >>>map(lambda x,y:x+y, a,b)
    >>>[5,7,9]
    
     ·reduce()函数,使用前需要导入  from functools import reduce
    reduce 函数可以按照给定的方法把输入参数中上序列缩减为单个的值,具体的做法如下:
    首先从序列中去除头两个元素并把它传递到那个二元函数中去,求出一个值,再把这个加到序列中循环求下一个值,直到最后一个值 。
    >>>reduce(lambda x,y:x*y, [1,2,3,4,5]#((((1*2)*3)*4)*5 >>>120 >>>reduce(lambda x,y:x*y, [1,2,3], 10) >>>60 #((1*2)*3)*10
  • 相关阅读:
    JAVA中的for循环
    Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的
    Android项目开发全程(二)--Afinal用法简单介绍
    Android项目开发全程(一)--创建工程
    Spring中的线程池和定时任务功能
    JVM内存分析
    并发基本概念介绍
    javax顶层接口分析
    HttpServlet源码分析
    SpringMVC创建HelloWorld程序
  • 原文地址:https://www.cnblogs.com/znh8/p/9264711.html
Copyright © 2020-2023  润新知