码迷,mamicode.com
首页 > 编程语言 > 详细

python Lambda, filter, reduce and map

时间:2014-09-02 14:09:04      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:blog   io   div   cti   log   sp   on   c   ad   

1. lambda 

The lambda operator or lambda function is a way to create small anonymous functions , i.e. functions without a name.

  可以方便的创造一个函数。比如

  

def add(x,y):

    return x+y

  用lambda 写就是

  

lambda x,y:x+y

  非常简洁。这条语句会返回一个函数指针,你可以他赋值,或者配合map ,reduce 等操作。

  比如说想把list [1,2,3,4,5]的每个值的乘2,返回一个list  .

2. map

  lambda配合map用是最方便的了。

     r = map(func, seq) 

    map接收一个func 指针,然后把函数作用到seq的每个成员上。

  接上面的例子就是 :

  

map(lambda x:x*2,[1,2,3,4,5])
[2, 4, 6, 8, 10]

    

3. Filtering

  和map 类似 ,只不过他是过滤list,也接受一个func的lambda 表达式,然后如果表达式为真就过滤掉。

     filter(function, list)

  

fib = [0,1,1,2,3,5,8,13,21,34,55]
filter(lambda x: x % 2, fib)
[1, 1, 3, 5, 13, 21, 55]

  直接过滤掉偶数的项。

4.Reducing 

  The function reduce(func, seq) continually applies the function func() to the sequence seq. It returns a single value. 

If seq = [ s1, s2, s3, ... , sn ], calling reduce(func, seq) works like this:

  [ func(s1, s2), s3, ... , sn ]

   [ func(func(s1, s2),s3), ... , sn ]

  持续对list 进行func的操作,最终结果是产生一个数值!

  

reduce(lambda x,y: x+y, [47,11,42,13])
113

  比如说这个,依次对47,11 进行相加, 变成 [58,42,13] 

    然后再相加 [100,13]

    113

  

 

python Lambda, filter, reduce and map

标签:blog   io   div   cti   log   sp   on   c   ad   

原文地址:http://www.cnblogs.com/gqdw/p/3951126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!