• 【Python】高阶函数介绍


    其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪。无非就是函数充当变量,可以传入函数而已。
    下面分别介绍 Python 中常见的高阶函数:map/reduce, filter, sorted

    map###


    map() 函数接收两个函数,一个是函数,一个是序列(可迭代均可), map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回


    举个例子:将 list 中所有的数字转化为字符串:

    >>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    ['1', '2', '3', '4', '5', '6', '7', '8', '9']
    

    reduce###


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


    例子1:将序列 [1, 3, 5, 7, 9] 变换成整数 13579。

    >>>reduce(lambda x, y : x * 10 + y, [1, 3, 5, 7, 9])
    13579
    

    filter###


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


    例子: 将一个序列中的空字符删掉。

    >>>filter(lambda s : s and s.strip(), ['A', '', 'B', None, 'C', '  '])
    ['A', 'B', 'C']
    

    sorted###


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

    传入自定义函数可以实现自定义排序。

    例子1:排序应该忽略大小写,按照字母序排序。

    def cmp_ignore_case(s1, s2):
        u1 = s1.upper()
        u2 = s2.upper()
        if u1 < u2:
            return -1
        if u1 > u2:
            return 1
        return 0
    >>> sorted(['bob', 'about', 'Zoo', 'Credit'], lambda s1, s2 : s1.upper() -s2.upper())
    ['about', 'bob', 'Credit', 'Zoo']
    

    另外数字反序有个很好的方法:

    sorted([36, 5, 12, 9, 21][::-1]
  • 相关阅读:
    CentOS 8.2上安装Cassandra Web部署
    CentOS 8.2上安装Apache Cassandra 3.11.9
    CentOS 8.2使用pgAdmin安装PostgreSQL 13.1
    windows 服务器报错处理,TLS升级为1.2
    网站跳转index.html
    安装fail2ban,防止ssh爆破及cc攻击
    服务器数据盘挂载
    2条命令在centos7.5中安装谷歌浏览器
    部署安装python3.7
    部署安装snort--入侵检测工具
  • 原文地址:https://www.cnblogs.com/nju2014/p/5449094.html
Copyright © 2020-2023  润新知