• python函数式编程学习之map,reduce,filter,sorted


    map(f, list)函数用于将函数f运用到list里的每个元素中

    写个例子

    def pow(x):

      return x*x

    map(pow, [2,3,4])

    reduce(f, list)函数用于将函数f运用到list的前两个元素,在将f运用到得到的结果和第三个元素,依次类推

    写个例子

    def add(x, y):

      return x+y

    redude(add, ['a', 'b', 'c', 'd'])

    abcd

    reduce(add, ['a','c','b','d'])

    acbd

    map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    sorted()方法对list进行排序

    sorted([36, 5, 12, 9, 21])
    [5, 9, 12, 21, 36]

    sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0

    sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]
    返回函数
    匿名函数lambda
    在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
    偏函数
    functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2
    >>> import functools
    >>> int2 = functools.partial(int, base=2)
    >>> int2('1000000')
    64
    >>> int2('1010101')
    85
    

    所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

    以上参考自廖雪峰老师的python2.7教程

  • 相关阅读:
    java实现复制网站内容
    java实现复制网站内容
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现串中找数字
    java实现串中找数字
    java实现串中找数字
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/6589882.html
Copyright © 2020-2023  润新知