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])

           

  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/zzfighting/p/5651287.html
Copyright © 2011-2022 走看看