zoukankan      html  css  js  c++  java
  • 函数式编程

    1、高阶函数:把函数作为参数传入,这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。

    2、python内建了map() 和 reduce()

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

      Eg:函数f(x)=  x2   ,要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]上,就可以使用map实现

        方法一:

        def f(x):

            return x*x

        >map(f,[1,2,3,4,5,6,7,8,9])   [1, 4, 9, 16, 25, 36, 49, 64, 81]          

        方法二:

        L=[]

        for n in [1,2,3,4,5,6,7,8,9]:

            L.append(f(n))

        print L

        map()函数计算简单,可以计算任意复杂的函数,比如,吧list所有数字转为字符串:>map(str,[1,2,3,4,5,6,7,8,9])  ['1', '2', '3', '4', '5', '6', '7', '8', '9']

        利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']

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

      def add(x,y):

        return x+y

      >reduce(add,[1,3,5,7,9])  25

    5、python内建函数 filter() 用于过滤序列。也接收一个函数和序列。

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

    Eg:在一个list中,删除偶数,只保留奇数

       def io_odd(n):

          return n%2==1

       >filter(is_odd,[1,2,4,5,6,9,10,15])    [1,5,9,15]

    Eg:把一个序列中的空字符串删掉

      def not_empty(s):

        return s and s.strip()

      >filter(not_empty,['A',‘  ’,‘B’,‘C’,None,‘  ’])  [‘A’,‘B’,‘C’]

    6、python内置的 sorted() 函数可以对list进行排序;>sorted([36,5,12,9,21])  [5,9,12,21,36]

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

    Eg:def reversed_cmp(x,y):

          if x>y:

            return -1

          if x<y:

            return 1

          if x>y:

            return 0

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

    Eg:>sorted(['bob', 'about', 'Zoo', 'Credit'])   ['Credit', 'Zoo', 'about', 'bob']

       默认情况下,对字符串排序,是按照ASCII的大小比较的

    需求:排序忽略大小写,按照字母排序  分析:实际上就是先把字符串都变成大写或小写,再比较

      def cmp_ignore_case(s1, s2):

        u1 = s1.upper()   //upper()方法字符串中的小写字母转为大写字母,返回所有基于字符被转换为大写的字符串的一个副本;; 

        u2 = s2.upper()   //Eg:s = "Hello Good Boy Doiido 123456"  print s.upper() 结果:HELLO GOOD BOY DOIIDO 123456

        if u1 < u2:

           return -1

        if u1 > u2:

           return 1

        return 0

      >sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)   ['about', 'bob', 'Credit', 'Zoo']

     7、匿名函数:关键字 lambda 表示匿名函数,冒号前面表示 函数参数。匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果

    eg:以map()函数为例:>map(lambda x:x*x,[1,2,3,4,5,6])

           

  • 相关阅读:
    nginx:配置详细说明
    linux:/etc/rc.local 不能自动启动问题
    nginx:403 forbidden 二种原因
    nginx:虚拟主机配置
    linux:lnmp环境搭建
    php:mysqli扩展
    linux:磁盘的分割、检验、格式化与挂载
    webpack
    js的window.onscroll事件兼容各大浏览器
    js window事件解析(转载)
  • 原文地址:https://www.cnblogs.com/zzfighting/p/5651287.html
Copyright © 2011-2022 走看看