python 匿名函数lambda 内置高阶函数map、reduce、filter、sorted

 lambda函数:

  Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。与其它语言不同,

Python的Lambda表达式的函数体只能有唯一的一条语句,也就是返回值表达式语句。

简单例子:

a = lambda x,y:x+y
print a(1,2)
输出结果为 3

lambda函数接收参数(最少为一个),参数之后接 :  ,然后是表达式,执行lambda函数最终lambda返回的是函数的执行结果。

 

  map函数:

  map函数是python内置的一个高阶函数,接收一个函数 f 和一个 list 两个参数,然后将函数 f 作用到list中的每个元素,最终返回一个新的list。

例子:

 def f(x):
     return x**2
 print map(f,[1,2,3,4,5,6,7,8,9,10])


输出结果为:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

  reduce函数:

  reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,

reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

例子:

##求n的阶乘
n = 5
print reduce(lambda x,y:x*y,range(1,n+1))
输出结果为:120

  filter函数:

  filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,

返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例子:(求1到100中能被开方的数字)

import math
def func(x):
    return math.sqrt(x) % 1 == 0
print filter(func,range(1,101))

  sorted函数:

  

  sorted(iterable, cmp=None, key=None, reverse=False),把iterable中的items进行排序之后,

返回一个新的列表,原来的iterable没有任何改变

      1) iterable:iteralbe指的是能够一次返回它的一个成员的对象。iterable主要包括3类:

      第一类是所有的序列类型,比如list(列表)、str(字符串)、tuple(元组)。 
  第二类是一些非序列类型,比如dict(字典)、file(文件)。
  第三类是你定义的任何包含__iter__()或__getitem__()方法的类的对象。
     2) cmp: 指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;
       如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。
     3)key:指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
     4)reverse:是一个布尔值。如果设置为True,列表元素将被降序排列,默认为升序排列。
 
通常来说,key和reverse比一个等价的cmp函数处理速度要快。这是因为对于每个列表元素,cmp都会被调用多次,而key和reverse只被调用一次。
li=[{"age":20,"name":"def"},{"age":25,"name":"abc"},{"age":10,"name":"ghi"}]
#li=sorted(li,key=lambda x:x["age"])
#print(li)
li = sorted(li,key=lambda x:x['age'])
print li

###降序排列
l1 = [('a',4),('b',8),('c',1),('d',3)]
sorted_l1 = sorted(l1,key=lambda x:x[1],reverse=True)
print sorted_l1

 

posted @ 2017-04-11 14:52  lonerangerr  阅读(126)  评论(0编辑  收藏  举报