您的位置:首页 > 编程语言 > Python开发

python基础系列(四)之特殊函数形式

2017-01-13 22:47 351 查看
引言:

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提供的内置功能要有一定了解和认识,在以后的问题中必然会遇到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: