为了账号安全,请及时绑定邮箱和手机立即绑定

python函数式编程的一些简单的了解。。。

标签:
Python

三、函数式编程里的高阶函数

  1. 高阶函数可以以函数作为参数。
  2. 常见内置高阶函数:
    1. 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])
    2. reduce()函数。reduce()函数接收的参数一个函数 f,一个list,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。如:reduce(f, [list.num1,list.num2])
      reduce()还可以接收第3个可选参数,作为计算的初始值。
    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)

      也可以实现字符穿的排序

  3. 返回一个函数:
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得到一个返回函数。

  1. 匿名函数:关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数,只能有一个表达式,不写return。即: lambda x: x * x 。
    举个例子:
print filter(lambda s:s and len(s.strip()) > 0,
 ['test', None, '', 'str', '  ', 'END'])
点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消