python中高阶函数学习笔记
什么是高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
def fun(x, y, f):
print f(x), f(y) fun(1, -2, abs)
结果:
1 2
内置高阶函数
map函数
map( ) 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 list 返回
def fun(x):
return x * x print map(fun, range(5))
结果:
[0, 1, 4, 9, 16] print map(str, [1, 2, 3])
结果:
['', '', '']
reduce函数
reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce 把结果继续和序列的下一个元素做累积计算
def add(x, y):
return x + y print reduce(add, range(5))
结果:
10
其实其运行过程为:add(add(add(add(0+1)+2)+3)+4)=10
filter函数
filter( ) 也接收一个函数和一个序列。和 map( ) 不同的是,filter( ) 把传入的函数依次作用于每个元素,然后根据返回值是 True还是 False 决定保留还是丢弃该元素
在一个 list 中,删掉偶数,只保留奇数:
def fun(n):
return n % 2 == 1 print filter(fun,range(5))
结果:
[1, 3]
sorted函数
• 排序也是在程序中经常用到的算法。 无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。通常规定如下:
x < y, return -1
x == y, return 0
x > y, return 1 print sorted([3, 1, 2])
print sorted([3, 1, 2], reverse=True)
结果:
[1, 2, 3]
[3, 2, 1]
排序数字字符
li = ['', '', '', '']
print sorted(li, key=int)
结果:
['', '', '', '']
匿名函数
•当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
•关键字 lambda 表示匿名函数,冒号前面的 x 表示函数参数
print map(lambda x: x * x, [1, 2, 3, 4]) def fun(x):
return x * x print map(fun, [1, 2, 3, 4])
结果:
[1, 4, 9, 16]
[1, 4, 9, 16]
• 匿名函数有只能有一个表达式,不用写 return ,返回值就是该表达式的结果。
• 因为匿名函数没有名字,不必担心函数名冲突。 此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数;
f = lambda x: x * x
print f
print f(3)
结果:
<function <lambda> at 0x7fde80eb7938>
9
•把匿名函数作为返回值返回
def fun(x, y):
return lambda: x * x + y * y print fun(1, 2)
f = fun(1, 2)
print f()
结果:
<function <lambda> at 0x7f5c2942a9b0>
5
传入多个参数:
f = lambda x,y =1,*args,**kwargs :(x*y,args,kwargs)
print f(2,4,5,a=1,b=5)
结果:
(8, (5,), {'a': 1, 'b': 5})
python中高阶函数学习笔记的更多相关文章
- Python中高阶函数sorted()用法
在Python中,有内置的排序方法:sorted(iterable, key, reverse). Sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序.key指定的函数 ...
- Python中高阶函数讲解
高阶函数讲解 1. 常规高阶函数 递归函数 格式:def func_name(variable): '''__doc__'''#函数的说明文档 if 条件表达式:#限制递归退出值 pass retur ...
- python中高阶函数与装饰器
高阶函数的定义:传入参数有函数名或者返回值有内置函数名的函数. 最简单的高阶函数: def add(x, y, f): return f(x) + f(y) add(-5, 6, abs) 常用 ...
- python 高阶函数学习, map、reduce
一个函数可以接收另一个函数作为参数,这样的函数叫做高阶函数. 函数map(): map()函数接收两个参数,一个是函数,一个是Iterable, map把函数作用于序列的每一个元素,并把结果作为Ite ...
- python中高阶函数与装饰器(3)
>>> f = lambda x: x * x>>> f<function <lambda> at 0x101c6ef28> >> ...
- python中高阶函数与装饰器(2)
函数返回值为内置函数名: def sum(*args): def sum_in(): ax = 0 for n in args: ax = ax ...
- python中format函数学习笔记
简而言之,format函数就是用{}来代替之前的输出字符时使用的% print('my name is %s and I am %d years old' % ('porsche',23)) 下面详细 ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- $《利用Python进行数据分析》学习笔记系列——IPython
本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是<利用Python进行数据分析>一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...
随机推荐
- mysql中的tinyint在C#中的类型
mysql中的tinyint在C#中的类型 在C#中对应的类型是System.SByte,不是byte.
- Java复习4.数组初始化.
Java复习4.Java中的数组声明方式 20131004 1.数组声明和初始化, 数组元素和变量一样,可以在定义的时候i进行初始化.数组元素的初始化工作实在编译阶段完成的,可以减少运行时间. 在初 ...
- System.Zip
自XE2增加的System.Zip单元很好.注意事项: 1.文件压缩到文档后所使用的文件名会成为解压后的文件名,如果该文件名为指定文件名且无后缀名,那么解压出来的文件名也没有后缀名:
- shell脚本实例二
练习题一:对已经存在的用户做密码的修改等操作 vim user_ctrl.sh ##进行如下编写 #!/bin/bashShow(){ read -p ...
- vscode 实用插件
1.Auto Rename Tag,非常实用!要修改标签名称的时候自动修改结束标签,节省一半时间,提升效率,非常棒! 2.vscode-icon,这款必须要推荐,明显提升效率的小插件,在项目文件多类型 ...
- CMD命令提示符下选中文字即可以复制和SecureCRT一样
用过 SecureCRT 的都会觉得复制粘贴很方便.只要选中相应文字,会自动复制.然后点鼠标右键就可以粘贴,非常方便. 但是在windows系统下的CMD里面,每次都要点鼠标右键→标记,再选中相应文字 ...
- MB到片组的映射
待分析 链接原文: http://blog.csdn.net/mr_phy/article/details/61638262
- Android gradle 安装成功,但是报虚拟机过大的错误处理方法
一.这个是项目中遇到的问题,记下来,以后再出现方便查看. 1.首先看图吧. 虚拟机内容过大 解决办法: 在.gradle目录下更改配置文件gradle.properjties 里面的 将标记的改成51 ...
- This is very likely to create a memory leak. Stack trace of thread
1.错误描述 警告: The web application [cmp] appears to have started a thread named [Abandoned connection cl ...
- VERIFY DATABASE 正在异常终止。 (Microsoft SQL Server,错误: 3169)
1.错误描述 标题: Microsoft SQL Server Management Studio ------------------------------ 备份介质验证失败: [文件: D:\S ...