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()就是一个把数字转换成二进制的方法了。

python学习(4)的更多相关文章

  1. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  2. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  3. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  4. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  5. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  8. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

  9. Python学习之路【目录】

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! 目录: Python学习[第一篇]python简介 Python学习[第二篇]p ...

  10. python学习笔记系列----(八)python常用的标准库

    终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...

随机推荐

  1. 30 个最棒的 jQuery 的拖放插件

    jQuery 允许用户为任意 DOM 元素添加可拖放的功能,通过 jQuery 的拖放插件你可以轻松实现网页上任意元素的拖拽操作.在本文中我们向你推荐 30 个最棒的 jQuery 的拖放插件. 点击 ...

  2. Portal技术综述

    从上世纪八十年代起,随着个人计算机(PC)的发展,企事业单位逐步建立起计算机应用系统来处理传统事务.从简单的单机应用逐步发展到局域网系统,进而建立跨地区垮国家的广域网系统.从单纯的以科学计算和数据管理 ...

  3. sjtu1586 Dog

    Description 隔壁村的阿黑的Dog没有跑, 但Dog已经15岁了, 相当于人类达到了79岁. 为了防止Dog患上犬类认知障碍 (Canine cognitive dysfunction, C ...

  4. HDU1395+快速幂

    #include<stdio.h> int fast_pow( int a,int b,int mod ){ ; ){ == ){ res = res*a%mod; } a = a*a%m ...

  5. [jobdu]第一个只出现一次的字符

    刚开始还在想双指针,完全没必要.然后最土的可以扫两遍O(n),用一个数组记录出现次数.然后想到如果数组里记录出现的位置,可以只扫一遍O(n),第二遍扫字符集就行了. #include <iost ...

  6. 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立

    原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...

  7. 【HDOJ】2828 Lamp

    DLX简单题目. /* */ #include <iostream> #include <sstream> #include <string> #include & ...

  8. Log4net创建日志及简单扩展

    转:http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log ...

  9. HDU 1881

    思路:一开始以为rating相同的点就直接比较rp然后建图,后来想想不对,因为这样发现不了冲突.后来一想对于rating相同的点可以不用排序,因为对于这些点,他们的rp必然不相同,也就是说在这些点的内 ...

  10. dataframe 数据统计可视化---spark scala 应用

    统计效果: 代码部分: import org.apache.spark.sql.hive.HiveContext import org.apache.spark.{Logging, SparkConf ...