初学 Python(十二)——高阶函数

  初学 Python,主要整理一些学习到的知识点,这次是高阶函数。

  1. #-*- coding:utf-8 -*-
  2.  
  3. '''''
  4. 话说高阶函数:
  5. 能用函数作为参数的函数
  6. 称为高阶函数
  7. '''
  8. #函数作参
  9. def f(x):
  10. return x*x
  11.  
  12. #map函数为内置函数,意思为将第二个参数的list作用到f函数中
  13. #最后的结果为一个list
  14. print map(f,[1,2,3,4,5])
  15. #reduce函数为内置函数,意思将第二参数的序列作用到add函数值
  16. #将结果做累加计算,最后的结果为一个数
  17. def add(x,y):
  18. return x+y
  19. print reduce(add,[1,2,3,4,5,6])
  20. #给出一个整数的每个位置上的数,得到该整数
  21.  
  22. def fn(x,y):
  23. return x*10+y
  24. print reduce(fn,[1,2,3,4,5])
  25.  
  26. #字符串转int
  27.  
  28. print reduce(fn,map(int,''))
  29.  
  30. def str2int(s):
  31. def fn(x,y):
  32. return x*10+y
  33. return reduce(fn,map(int,s))
  34.  
  35. print str2int('')
  36. '''''
  37. 上面函数的调用步骤是:
  38. 1.得到reduce(fn,map(int,'123456'))
  39. 2.得到reduce(fn,[1,2,3,4,5,6])
  40. 3.得到reduce(x*10+y,[1,2,3,4,5,6])
  41. 4.得到123456
  42. '''
  43. def str2int2(s):
  44. return reduce(lambda x,y:x*10+y,map(int,s))
  45. print str2int2('')
  46.  
  47. #排序
  48. print sorted('')
  49. print sorted((1,8,4,2,5))
  50. print sorted([9,8,7,6,5,4,3])
  51. print sorted(['name','Age','Sex','address'])
  52. #sorted也是一个高阶函数,所以它也可以传函数来改变排序的算法
  53. #倒序
  54. def inverted_order(x,y):
  55. if x>y:
  56. return -1
  57. elif x<y:
  58. return 1
  59. else:
  60. return 0
  61. print sorted((1,8,4,2,5),inverted_order)
  62.  
  63. #改变字符串排序算法
  64. #上面字符串排序是根据ascii码来判断大小
  65. #由于大写字母都比小写字母的ascii码小,
  66. #但是一般我们都是按照字母表的顺序排列
  67. #下面来变换一下算法,忽略大小写
  68.  
  69. def alphabet(s1,s2):
  70. l1 = s1.lower()
  71. l2 = s2.lower()
  72. if l1 < l2:
  73. return -1
  74. elif l2 < l1:
  75. return 1
  76. else:
  77. return 0
  78.  
  79. print sorted(['name','Age','Sex','address'],alphabet)
  80.  
  81. '''''
  82. 函数作为返回值
  83. 其实刚才在将字符串转int时就涉及到了
  84. 这种将函数作为返回值的形式
  85. '''
  86.  
  87. def sum(*args):
  88. sum = 0
  89. for n in args:
  90. sum+=n
  91. return sum
  92. print sum(1,2,3,4,5)
  93.  
  94. #改装成返回函数的形式
  95.  
  96. def sum_pack(*args):
  97. def sum():
  98. sum1 = 0
  99. for n in args:
  100. sum1+=n
  101. return sum1
  102. return sum
  103.  
  104. g = sum_pack(1,2,3,4,5)
  105. print g
  106. #<function sum at 0x0134C0F0>
  107. #g输出为函数,想打印结果要调用函数
  108. print g()
  109.  
  110. '''''
  111. 闭包的定义:
  112. 字函数自动获取父函数的变量和参数
  113. 进入我的地盘就是我的
  114. 而且每一次调用返回的函数
  115. 都不是同一个对象
  116. '''
  117.  
  118. g1 = sum_pack(1,2,3,4,5)
  119. g2 = sum_pack(1,2,3,4,5)
  120. print g1==g2

初学 Python(十二)——高阶函数的更多相关文章

  1. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  2. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  3. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  4. Python中的高阶函数与匿名函数

    Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...

  5. python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  6. 匿名函数python内置高阶函数以及递归

    匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...

  7. python 函数式编程 高阶函数 装饰器

    # -*- coding:gb2312 -*- #coding=utf-8 # 高阶函数 import math def is_sqr(x): y = int(math.sqrt(x)) return ...

  8. Python学习笔记 - 高阶函数

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

  9. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  10. python学习笔记——高阶函数map()

    满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指 ...

随机推荐

  1. POJ 2388

    还是水题,简单的排序.大半夜的,没脑子想太复杂的代码了,就随手找了段以前写的插入排序将就着用了. 题目的意思就是取一个数列的中位数,很简单,排序后取a[n/2]即可. 代码如下: #ifndef _2 ...

  2. Winform中Chart图表的简单使用

    在常见的一些数据采集的系统中, 都少不了一个就是, 数据分析, 无论是报表的形式, 还是图形的形式. 他都是可以迅速的展现一个数据趋势的实现方法, 而今天, 就是简单介绍一下, 微软的工具库自带的 C ...

  3. 深入浅出HTTP协议

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...

  4. TIOBE:全球编程语言最新排名(Kotlin排名进入前50名)

    作为coder,大家当然关心自己所使用语言的应用趋势.要是几年后所用语言变得默默无闻,那岂不是之前的知识储备与经验积累都会大打折扣.TIOBE排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量 ...

  5. vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)

    Vue有多优秀搭配全家桶做项目有多好之类的咱就不谈了,直奔主题. 一.Vue 系列一已经用vue-cli搭建了Vue项目,此处就不赘述了. 二.Vue-router Vue的路由,先献上文档(http ...

  6. 如何在前端模版引擎开发中避免使用eval函数

    前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用.于是根据自己对模版引擎的理解,定义自己的模版格式,然后,根据自己定义的格式,编写处理函数,将模版标签中的字符串,解析成可执行的字 ...

  7. Web 前端代码规范

    Web 前端代码规范 最后更新时间:2017-06-25 原始文章链接:https://github.com/bxm0927/web-code-standards 此项目用于记录规范的.高可维护性的前 ...

  8. linux软件包介绍

    一. 软件包的种类 源码包 二进制包(rpm包.系统默认包) 二. 优缺点对比 源码包 源码包的优点 1) 开源,源码可见,且可以修改 2) 配置更加灵活,可以自由选择所需的功能 3) 软件是编译安装 ...

  9. Swift自增和自增运算

    自增和自增运算 和 C 语言一样,Swift 也提供了方便对变量本身加1或减1的自增(++)和自减(--)的运算符.其操作对象可以是整形和浮点型. ‌ var i = ++i // 现在 i = 1 ...

  10. 【操作教程】利用YCSB测试巨杉数据库性能

    一.前言 巨杉数据库(SequoiaDB)是国内第一款新一代文档型分布式数据库,巨杉数据库由巨杉软件完全自主研发,拥有完全自主知识产权,不基于任何其它的开源项目.SequoiaDB数据库是为分布式存储 ...