zoukankan      html  css  js  c++  java
  • Python练习-高阶函数-2018.12.03

    1.函数式编程的概念

    在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。

    而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。

    对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。

    函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。

    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!

    Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

    2.

    #一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
    def add(x,y,f):
        return f(x)+f(y)
    def square(x):
        return x**2
    print(add(-5,6,square))

     3.map

      map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。  

    # 使用map和高阶函数计算list的平方
    def square(x):
        return x*x
    r=map(square,[1,2,3,4,5])
    print(list(r))
    #map()传入的第一个参数是f,即函数对象本身。由于结果r是一个IteratorIterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
    #使用map将不规范的英文名字,变为首字母大写,其他小写
    def stan(x):
        if len(x)>0:
            y=x[:1].upper()+x[1:].lower()
            return y
        else:
            print('NONE')
    L=['zhangsan','lisi','WANGWU','zhaoLIU']
    l=list(map(stan,L))
    print(l)

    4.reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)  

    #使用reduce实现序列求和
    from functools import reduce
    def plus(x,y):
        return x+y
    S=reduce(plus,[1,3,5,7,9])
    print(S)

    print(sum([1,3,5,7,9])) 
    #使用reduce把序列[1, 3, 5, 7, 9]变换成整数13579
    from functools import reduce
    def fn(x,y):
        return x*10+y
    S=reduce(fn,[1,3,5,7,9])
    print(S)
  • 相关阅读:
    PopupWindow设置动画效果
    android判断是否含有某权限
    每日一更提醒
    利用Pattern和Mather来禁止特殊字符的输入
    Android毛玻璃处理代码(Blur)
    how to render html tag
    数组
    复杂度分析
    书写markdown的利器
    cannot insert multiple commands into a prepared statement问题原因及解决办法
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/10058432.html
Copyright © 2011-2022 走看看