• python学习(4)


    python(4)
    4.1 高阶函数:map/reduce
     map:实际上map也是一个函数,只不过他可以在参数里面包含别的函数。他有两种参数:第一种:函数(作用在后面要说的序列上),第二种:一个序列
     例如:map(f,[1,2,3,4,5]) 而这个函数 f 功能是把一个数字平方,那么就会输出一个List  -->[1,4,9,16,25]
     reduce:实际上也是一个函数,可以包含和map一样的两种参数,只不过 f 这个函数包含两个参数,其效果是这样的:
     reduce(f,[a,b,c,d,e])=f(f(f(f(a,b),c),d)),它实际上可以用来做连加运算。当然sum函数也可以。
    4.2 排序算法
     bulid-in函数:sorted(),实际上它的格式是这样的sorted(iterable,cmp,key,reverse)
     解释一下:iterable就是迭代方式,可以是list之类,
     cmp是排序的方法(怎么排序),key是排序的权值(根据什么来排序,这里key接受的是函数的返回值),reverse就是正序和逆序。例如:
     l=[{'stu1':1,'stu1':2},{'stu2':3},{'stu3':4,'stu4':5,'stu5':6}]
     def func(x):
      return len(x)     
     print sorted(l,cmp=None,key=func,reverse=1)   #key用来判断 “根据什么排序!”,显然这里是根据list里面每个dict的长度排序,key接受的是一个返回的函数对象
     
     cmp的用法:
     L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
     def f2(a,b):
      return a[1]-b[1]
     L.sort(cmp=f2)
     print L
     按照L中dict中key为1的value大小进行排序。
    4.3 匿名函数lambda:>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
          [1, 4, 9, 16, 25, 36, 49, 64, 81]  
         x是参数,没有return,表达式x*x就是return
    4.4 装饰器(decorator):在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
     本质上,decorator就是一个返回函数的高阶函数。所以,我们要定义一个能打印日志的decorator例如:
     def log(func):
        def wrapper(*args, **kw):
            print 'call %s():' % func.__name__
            return func(*args, **kw)
        return wrapper
     如何调用:
     @log
     def now():
      print('!!!')
     其效果是:now=log(now)  
     结果是:
     call now()
     !!!
    4.5 偏函数(Partial function):实际上就是把某些已经有的函数,它的参数设置成默认的,用的时候就不必每次都要写,减少麻烦。例如:
     def int2(x, base=2):
      return int(x, base)
     int2()就是一个把数字转换成二进制的方法了。

  • 相关阅读:
    quotaon
    quotacheck
    quota
    query_module
    数据库连接驱动
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 76 最小覆盖子串
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
  • 原文地址:https://www.cnblogs.com/lout/p/3833554.html
Copyright © 2020-2023  润新知