初学 Python(十二)——高阶函数
初学 Python(十二)——高阶函数
初学 Python,主要整理一些学习到的知识点,这次是高阶函数。
- #-*- coding:utf-8 -*-
- '''''
- 话说高阶函数:
- 能用函数作为参数的函数
- 称为高阶函数
- '''
- #函数作参
- def f(x):
- return x*x
- #map函数为内置函数,意思为将第二个参数的list作用到f函数中
- #最后的结果为一个list
- print map(f,[1,2,3,4,5])
- #reduce函数为内置函数,意思将第二参数的序列作用到add函数值
- #将结果做累加计算,最后的结果为一个数
- def add(x,y):
- return x+y
- print reduce(add,[1,2,3,4,5,6])
- #给出一个整数的每个位置上的数,得到该整数
- def fn(x,y):
- return x*10+y
- print reduce(fn,[1,2,3,4,5])
- #字符串转int
- print reduce(fn,map(int,''))
- def str2int(s):
- def fn(x,y):
- return x*10+y
- return reduce(fn,map(int,s))
- print str2int('')
- '''''
- 上面函数的调用步骤是:
- 1.得到reduce(fn,map(int,'123456'))
- 2.得到reduce(fn,[1,2,3,4,5,6])
- 3.得到reduce(x*10+y,[1,2,3,4,5,6])
- 4.得到123456
- '''
- def str2int2(s):
- return reduce(lambda x,y:x*10+y,map(int,s))
- print str2int2('')
- #排序
- print sorted('')
- print sorted((1,8,4,2,5))
- print sorted([9,8,7,6,5,4,3])
- print sorted(['name','Age','Sex','address'])
- #sorted也是一个高阶函数,所以它也可以传函数来改变排序的算法
- #倒序
- def inverted_order(x,y):
- if x>y:
- return -1
- elif x<y:
- return 1
- else:
- return 0
- print sorted((1,8,4,2,5),inverted_order)
- #改变字符串排序算法
- #上面字符串排序是根据ascii码来判断大小
- #由于大写字母都比小写字母的ascii码小,
- #但是一般我们都是按照字母表的顺序排列
- #下面来变换一下算法,忽略大小写
- def alphabet(s1,s2):
- l1 = s1.lower()
- l2 = s2.lower()
- if l1 < l2:
- return -1
- elif l2 < l1:
- return 1
- else:
- return 0
- print sorted(['name','Age','Sex','address'],alphabet)
- '''''
- 函数作为返回值
- 其实刚才在将字符串转int时就涉及到了
- 这种将函数作为返回值的形式
- '''
- def sum(*args):
- sum = 0
- for n in args:
- sum+=n
- return sum
- print sum(1,2,3,4,5)
- #改装成返回函数的形式
- def sum_pack(*args):
- def sum():
- sum1 = 0
- for n in args:
- sum1+=n
- return sum1
- return sum
- g = sum_pack(1,2,3,4,5)
- print g
- #<function sum at 0x0134C0F0>
- #g输出为函数,想打印结果要调用函数
- print g()
- '''''
- 闭包的定义:
- 字函数自动获取父函数的变量和参数
- 进入我的地盘就是我的
- 而且每一次调用返回的函数
- 都不是同一个对象
- '''
- g1 = sum_pack(1,2,3,4,5)
- g2 = sum_pack(1,2,3,4,5)
- print g1==g2
初学 Python(十二)——高阶函数的更多相关文章
- Scala学习十二——高阶函数
一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...
- Python入门篇-高阶函数
Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数 1>.First Class Object 函数在Python中是一等公民 函数也 ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
- Python中的高阶函数与匿名函数
Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...
- python六十课——高阶函数之map
1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...
- 匿名函数python内置高阶函数以及递归
匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...
- python 函数式编程 高阶函数 装饰器
# -*- coding:gb2312 -*- #coding=utf-8 # 高阶函数 import math def is_sqr(x): y = int(math.sqrt(x)) return ...
- Python学习笔记 - 高阶函数
高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...
- python 常用的高阶函数
前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...
- python学习笔记——高阶函数map()
满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指 ...
随机推荐
- POJ 2388
还是水题,简单的排序.大半夜的,没脑子想太复杂的代码了,就随手找了段以前写的插入排序将就着用了. 题目的意思就是取一个数列的中位数,很简单,排序后取a[n/2]即可. 代码如下: #ifndef _2 ...
- Winform中Chart图表的简单使用
在常见的一些数据采集的系统中, 都少不了一个就是, 数据分析, 无论是报表的形式, 还是图形的形式. 他都是可以迅速的展现一个数据趋势的实现方法, 而今天, 就是简单介绍一下, 微软的工具库自带的 C ...
- 深入浅出HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- TIOBE:全球编程语言最新排名(Kotlin排名进入前50名)
作为coder,大家当然关心自己所使用语言的应用趋势.要是几年后所用语言变得默默无闻,那岂不是之前的知识储备与经验积累都会大打折扣.TIOBE排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量 ...
- vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
Vue有多优秀搭配全家桶做项目有多好之类的咱就不谈了,直奔主题. 一.Vue 系列一已经用vue-cli搭建了Vue项目,此处就不赘述了. 二.Vue-router Vue的路由,先献上文档(http ...
- 如何在前端模版引擎开发中避免使用eval函数
前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用.于是根据自己对模版引擎的理解,定义自己的模版格式,然后,根据自己定义的格式,编写处理函数,将模版标签中的字符串,解析成可执行的字 ...
- Web 前端代码规范
Web 前端代码规范 最后更新时间:2017-06-25 原始文章链接:https://github.com/bxm0927/web-code-standards 此项目用于记录规范的.高可维护性的前 ...
- linux软件包介绍
一. 软件包的种类 源码包 二进制包(rpm包.系统默认包) 二. 优缺点对比 源码包 源码包的优点 1) 开源,源码可见,且可以修改 2) 配置更加灵活,可以自由选择所需的功能 3) 软件是编译安装 ...
- Swift自增和自增运算
自增和自增运算 和 C 语言一样,Swift 也提供了方便对变量本身加1或减1的自增(++)和自减(--)的运算符.其操作对象可以是整形和浮点型. var i = ++i // 现在 i = 1 ...
- 【操作教程】利用YCSB测试巨杉数据库性能
一.前言 巨杉数据库(SequoiaDB)是国内第一款新一代文档型分布式数据库,巨杉数据库由巨杉软件完全自主研发,拥有完全自主知识产权,不基于任何其它的开源项目.SequoiaDB数据库是为分布式存储 ...