引言:
python 2.x中有几种自带的特殊的函数,如map,reduce,filter,lambda等,但有些到3.x中已经发生些许变化,这里我们基于python3.x语法讲述这几个函数,灵活运用这些内建函数可以大大的提高我们代码的简洁性,提高代码开发的速度。
1.lambda函数:
| 功能 | 表达形式 | 解释 |
|---|---|---|
| 简化程序,避免短小代码起函数名 | lambda param1[,param2…]:函数体 | 因为我们开发程序中可能有很多函数名,但是有时候我们不需要给一个很短的函数代码命名一个函数,或是难以达到见名知意的效果,这时lambda函数就派上用场了。 |
栗子one:
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等转化。 |
栗子one:
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的类型相同。 |
栗子one:
#找出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 3.x中的lambda、map、reduce及filter等内建函数的应用技巧,通过实例展示如何利用这些函数提升代码效率。
8万+

被折叠的 条评论
为什么被折叠?



