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交互环 ...
随机推荐
- 记录selenium操作
# -*- coding: utf-8 -*- # coding:utf-8 必须在第一行才能支持中文注释 #!/usr/bin/python # android-build.py # Build a ...
- windows下使用selenium报错selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH
问题 :执行程序代码报错: WebDriverException:Message:'geckodriver'executable needs to be in Path 或者 selenium.com ...
- phpMyAdmin 应用程序“DEFAULT WEB SITE”中的服务器错误
分析原因:没有“C:\inetpub\wwwroot\phpmyadmin\”此目录 解决办法:新建路径 分析原因:IIS设置少了一项,需添加"服务端包含"选项 解决办法:控制面板 ...
- FortiDDoS是使用历史流量基线进行检测的
Understanding FortiDDoS Detection ModeIn Detection Mode, FortiDDoS logs events and builds traffic st ...
- JS正则表达式的分组匹配
什么是分组 通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的: var reg = /(\d{2})/ reg.test('12'); //true 这里reg中的( ...
- cf 915
t1:2分钟ac,简单模拟 t2:3发wa,最后再10分钟的时候过了 但是最后被hack了 t3:2发wa,最后还是被hack了 t4:拓扑排序 然后将一个点入度减一 然后是否能拓扑 t5:离散化+线 ...
- 性能优化 - 查看 webpack 打包后所有的依赖关系(webpack 可视化工具)
查看 webpack 打包后所有组件与组件间的依赖关系,针对多余的包文件过大, 剔除首次影响加载的效率问题进行剔除修改,本次采用的是 ==webpack-bundle-analyzer(可视化视图查看 ...
- Spring Framework Artifacts
GroupId ArtifactId Description org.springframework spring-aop Proxy-based AOP support org.springfram ...
- HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法
这两个函数比较简单,我这里直接写例子,但是有一点一定要注意,json数据只支持utf-8格式,GBK格式的数据转换为json会报错! json_encode()用法: <?php$data =a ...
- Linux之FTP服务
一.ftp服务 ftp是一个文件传输协议(File Transfer Protocal).lftp相当于一个浏览器,用来向服务器发送请求的. 进行FTP服务的相关操作的时候,要先修改 vim /et ...