初学 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() 会根据提供的函数对指 ...
随机推荐
- SQL Server 使用ROW_NUMBER实现的高效分页排序
declare @pageNum int declare @pageSize int select * from (select ROW_NUMBER() over(order by a_Creati ...
- 收集一些工作中常用的经典SQL语句
作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作中常用的SQL语句,希望能给大家带来一些帮助,当然不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT INTO ...
- [1] Report Fusioncharts
图形报表之fusioncharts
- js模版引擎开发实战以及对eval函数的改进
简介 前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用,同时也算是之前学习的知识的一种总结吧! 首先我们先了解一下模版引擎的工作原理吧! 1. 模版引擎其实就是将指定标签的内容根 ...
- Sqlserver2005 破解版下载地址
Sqlserver2005 破解版下载地址:http://www.xiaidown.com/soft/from/1583.html
- 调用phprpc的时候出现Fatal error: Cannot redeclare gzdecode()
出现这个问题的原因是:php在5.4版本后,已经自包含了gzdecode()函数,开发者自己定义的gzdecode()函数会与其冲突. 在 ....\phpRPC\compat.php文件的第72行( ...
- CSS使用心得小结
CSS心得 最近对CSS的使用有一些小心得,在此写下来给大家分享分享 .最后附上选择器的实例代码. ------DanlV CSS是什么 层叠样式表(英文全称:Cascading Style Shee ...
- 原生JS的HTTP请求
ar xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if( xhr.readyState == 4){ if( xh ...
- 自定义事件解决重复请求BUG
现在,组件化开发还是比较流行的,毕竟其优点相当突出.最近在开发一个组件的时候,遇到了一个很有意思的BUG... BUG的背景 最近在开发一个组件,好不容易开发好了转测试.然后,测试给我提了一个这样的b ...
- SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域
SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域 >>>>>>>>>>>> ...