zoukankan      html  css  js  c++  java
  • python 基础 4.2 高阶函数上

    一.高阶函数
    把函数当做参数传递的一种函数
     
    1》map()函数
    map函数是python内置的一个高阶函数,它接受一个函数f和一个list,并把list元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表,如下所示:
     
    #map()函数,传入的必须是一个可迭代的对象
    lt = [1,2,3,4,5]
    # lt = [1,2,3,4,5]
    def f2(x):
    return x*x
    ml = map(f2,lt)
    print type(ml)
    print ml
     
    >>> <type 'list'>
    [1, 4, 9, 16, 25]
     
     
    2>reduce()函数
    reduce()函数也是python内置的一个高阶函数,reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数f必须接收两个参数,第一次调用是把list的前两个元素传递给f,第二次调用时,就是把前两个list元素的计算结果当成一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后以此类推,并返回最终结果值。
     
    ##reduce()函数
    def f(x,y):
    return x + y
    print reduce(f,[1,2,3,4,5],10)
     
    >>> 25
     
    解释:
    1.计算 a = f(1,2)的值为3
    2.计算 b = f(a,3)的值为6
    3,计算c = f(b,4)的值为10
    4,计算d = f(c,5)的值为15
    5,计算f(d,10)的值为25
    其实就是相当于 1+2+3+4+5+10,最后10是一个默认值,及最终在执行一次。
     
     
    3》filter()函数
    filter英文单词就是过滤的意思,filter()函数是python内置的另一个有用的高阶函数,filter() 函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或flase,filter() 根据判断结果自动过滤不符合条件的元素,返回由符合条件元素组成的新list,例子如下:
     
    ###filter() 函数每次把可迭代对象的元素传入进去,如果返回未True,则保留该元素,如果返回为False,则不保留.该函数是保留真的,过滤掉假的
    a = [1,2,3,4,5,6]
    def is_old(x):
    return x%2 ==1
    #带入实参is_old=5 传入
    # print is_old(5)
     
    #带入实参,列表a传入
    print filter(is_old,a)
     
    >>> True
     
    >>> [1, 3, 5]
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    [20180604]在内存修改数据(bbed).txt
    [20180630]truncate table的另类恢复2.txt
    [20180627]truncate table的另类恢复.txt
    [20180627]测试bbed是否支持管道命令.txt
    navicat连接异常 authentication plugin 'caching_sha2_password' 问题解决
    MYSQL类型与JAVA类型对应表
    Tomcat 8 Invalid character found in the request target. The valid characters are defined in RFC 3986
    springboot集成拦截器
    Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig
    springboot集成过滤器
  • 原文地址:https://www.cnblogs.com/lzcys8868/p/7772753.html
Copyright © 2011-2022 走看看