三、函数式编程里的高阶函数
- 高阶函数可以以函数作为参数。
- 常见内置高阶函数:
- map(),它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。这类似于数学中函数的映射关系,map()函数不改变原有的 list,而是返回一个新的 list。list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list。
 比如:def f(x): return x*x print map(f, [,5, 6, 7, 8, 9])
- reduce()函数。reduce()函数接收的参数一个函数 f,一个list,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。如:reduce(f, [list.num1,list.num2])
 reduce()还可以接收第3个可选参数,作为计算的初始值。
- filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。如:def is_odd(x): return x % 2 == 1 filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
 返回结果:
 
 4.sorted()函数可对list进行排序,可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该在 y 前面,返回 -1,如果 x 应该在 y 后面,返回 1。 x 和 y 相等,返回 0。因此我们可以实现倒序排序:def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0 print sorted([36, 5, 12, 9, 21], reversed_cmp)也可以实现字符穿的排序 
 
- map(),它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。这类似于数学中函数的映射关系,map()函数不改变原有的 list,而是返回一个新的 list。list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list。
- 返回一个函数:
def calc_prod(lst):
    def mulx():
        mul=1.0
        for x in lst:
            mul*=x
        return mul
    return mulx
f = calc_prod([1, 2, 3, 4])
print f()这里面函数 fcalc_prod内部又定义了一个函数 mulx。由于函数mulx也是一个对象,函数名 mulx就是指向函数 mulx的变量,所以,最外层函数 calc_prod 可以返回变量 mulx,也就是函数 mulx本身。f得到一个返回函数。
- 匿名函数:关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数,只能有一个表达式,不写return。即: lambda x: x * x 。
 举个例子:
print filter(lambda s:s and len(s.strip()) > 0,
 ['test', None, '', 'str', '  ', 'END'])点击查看更多内容
					4人点赞
										
				 评论
				共同学习,写下你的评论
评论加载中...
作者其他优质文章
					正在加载中
				
			感谢您的支持,我会继续努力的~
		扫码打赏,你说多少就多少
		赞赏金额会直接到老师账户
		支付方式
		打开微信扫一扫,即可进行扫码打赏哦
	 
                 
            
 
			 
					 
					