zoukankan      html  css  js  c++  java
  • Python函数式编程(二):常见高级函数

    一个函数的参数中有函数作为参数,这个函数就为高级函数。

    下面学习几个常见高级函数。

    ---------------------------------------------------------------------------------------

    一、map()

    传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

    举例:

    有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]

    >>> def f(x):
    ...     return x * x
    ...
    >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> list(r)
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    即list每一个元素都执行了函数f的操作

    -------------------------------------------------------------------------------------

    二、filter()

    传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

    和map()类似,不过这里就要求函数的返回值必须是布尔型

    举例:

    在一个list中,删掉偶数,只保留奇数
    
    def is_odd(n):
        return n % 2 == 1
    
    list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
    # 结果: [1, 5, 9, 15]
    把一个序列中的空字符串删掉,可以这么写:
    
    def not_empty(s):
        return s and s.strip()
    
    list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
    # 结果: ['A', 'B', 'C']

    -------------------------------------------------------------------------------------

     三、reduce()

    一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

    举例:

    >>> from functools import reduce
    >>> def add(x, y):
    ...     return x + y
    ...
    >>> reduce(add, [1, 3, 5, 7, 9])
    25


    过程就是先计算1+3 返回4 ,再根据这个结果+5 ,依次计算,就相当于1+3+5+7+9=25

    -------------------------------------------------------------------------------------

     四、sorted()

    排序函数,数字按有小到大排列,字符串由ASCII大小排列

    1、基础用法:

    >>> sorted([36, 5, -12, 9, -21])
    [-21, -12, 5, 9, 36]
    >>> sorted(['bob', 'about', 'Zoo', 'Credit'])
    ['Credit', 'Zoo', 'about', 'bob']

    2、函数key参数用法:

    即将元素先按key对应的函数一个个处理完之后在进行排序

     下面,先将list的元素一个个绝对值处理,然后排序

    sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
    
    >>> sorted([36, 5, -12, 9, -21], key=abs)
    [5, 9, -12, -21, 36]

      下面,先将list的元素字母都小写,然后排序

    >>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
    ['about', 'bob', 'Credit', 'Zoo']

    3、函数reverse参数用法,是否结果反转

    >>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
    ['Zoo', 'Credit', 'bob', 'about']
  • 相关阅读:
    sql ''增删改'' 笔记
    表单
    html基础
    第一本书的总结
    带参
    字符串
    zookeeper入门与实践
    node中间层转发请求
    npm脚本传参问题
    docker入门笔记
  • 原文地址:https://www.cnblogs.com/xqxacm/p/9803902.html
Copyright © 2011-2022 走看看