python基础系列(四)之特殊函数形式
2017-01-13 22:47
351 查看
引言:
python 2.x中有几种自带的特殊的函数,如map,reduce,filter,lambda等,但有些到3.x中已经发生些许变化,这里我们基于python3.x语法讲述这几个函数,灵活运用这些内建函数可以大大的提高我们代码的简洁性,提高代码开发的速度。
1.lambda函数:
栗子one:
2.map函数:
栗子one:
栗子two:
3.reduce函数
简单来说,可以用这样一个形象化的式子来说明:
reduce( func, [1, 2,3] ) = func( func(1, 2), 3)
下面是reduce函数的工作过程图:
栗子one:
4.filter函数
栗子one:
栗子two:
5.总结
编程中不重复造轮子是一个很重要的原则,所以我们对python提供的内置功能要有一定了解和认识,在以后的问题中必然会遇到。
python 2.x中有几种自带的特殊的函数,如map,reduce,filter,lambda等,但有些到3.x中已经发生些许变化,这里我们基于python3.x语法讲述这几个函数,灵活运用这些内建函数可以大大的提高我们代码的简洁性,提高代码开发的速度。
1.lambda函数:
功能 | 表达形式 | 解释 |
---|---|---|
简化程序,避免短小代码起函数名 | lambda param1[,param2…]:函数体 | 因为我们开发程序中可能有很多函数名,但是有时候我们不需要给一个很短的函数代码命名一个函数,或是难以达到见名知意的效果,这时lambda函数就派上用场了。 |
lambda x,y:return x+y #等价于下面代码 def sum(x,y): return x+y
2.map函数:
功能 | 表达形式 | 解释 |
---|---|---|
map操作是将一个或多个序列sequence通过函数映射为另一个序列 | map(functon,sq1[,sq2…]) | map操作是将一个或多个序列sequence通过函数映射为另一个序列sequence,这个序列sequence可以是List、Set、Dict,Str,Tuple。结果返回为一个可以迭代的map对象,可以通过List等转化。 |
s=[1,3,5,7,9] g=map(labmda x:x+1,s) #将其转化为list形式 s1=list(g) print(s1) #输出为:[2,4,6,8,10]
栗子two:
s=[1,3,5,7,9] s1=[2,4,6,8,10] #将多个进行序列映射 g=map(lambda x,y:x+y,s,s1) #转化为list,若集合太大可通过迭代的方式访问 s2=list(g) print(s2) #输出为:[3,7,11,15,19]
3.reduce函数
在python2.x中reduce函数是作为内建函数的,但是在python 3.x语法中,已经被放入fucntools模块中.需要使用from fucntools import reduce导入这个函数。
功能 | 表达形式 | 解释 |
---|---|---|
reduce函数即为对一个序列进行化简操作,结果只返回一个单值 | reduce(func,sequence[, initial]) | 它是这样一个过程:每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。 |
reduce( func, [1, 2,3] ) = func( func(1, 2), 3)
下面是reduce函数的工作过程图:
栗子one:
#对序列中元素进行累计操作 from functools import reduce s=[1,2,3,4,5] result=reduce(lambda x,y:x+y,s) print(result) #输出结果为:15
4.filter函数
功能 | 表达形式 | 解释 |
---|---|---|
filter函数是对一个序列(list,str,tuple)进行过滤。 | filter(func,sequence) | function是一个谓词函数,接受一个参数,返回布尔值True或False。filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。返回值的类型和参数sequence的类型相同。 |
#找出1到10之间的奇数 s=filter(lambda x:x%2!=0,range(1,11)) print(list(s)) #结果输出为:[1,3,5,7,9]
栗子two:
如果sequence是一个string s=filter(lambda x:len(x)!=0,'hello') print(list(s)) #结果输出为['h','e','l','l','0']
5.总结
编程中不重复造轮子是一个很重要的原则,所以我们对python提供的内置功能要有一定了解和认识,在以后的问题中必然会遇到。
相关文章推荐
- 自动化运维Python系列(三)之基础函数和文件操作
- python学习系列之python装饰器基础(2)---装饰含返回值的函数
- Python基础系列----函数,面向对象,异常
- 【脚本语言系列】关于Python基础知识函数缓存,你需要知道的事
- Python连载系列之Python语法基础2:Python中的函数
- python中用元组传递函数参数的形式
- python 特殊函数的用法
- Python基础07 函数
- J2SE基础夯实系列之equals 和 ==的两个特殊例子
- J2SE基础夯实系列之equals 和 ==的两个特殊例子
- Python基础07 函数
- .NET基础扩展系列-如何获取事件的响应函数列表
- Python基础知识(四)--函数
- Python基础:函数、类、模块
- 【转】 python特殊方法函数
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识
- Python连载系列之Python语法基础1:开始使用Python
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
- [Python 2 到 3 系列]print 是函数
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识