常见 Python内置函数

常见Python内置函数

Python提供了很多能实现各种功能的内置函数。内置函数,就是在Python中被自动加载的函数,任何时候都可以使用。

map函数
filter函数
reduce函数

map函数

map函数会根据提供的函数对指定的序列做映射。

map函数的定义如下:

map(function,iterable, …)

上述定义中,第一个参数function表示的是一个函数名,第二个参数itherable可以是序列,支持迭代的容器或迭代器。当调用map函数时,itherable中的每个元素都会调用function函数,所有元素调用function函数返回的结果会保存到一个迭代器对象中。

这里说明一下,在Python2中,map函数的返回值是列表list类型。

如果希望将迭代器对象转换为列表,则可以通过list函数进行转化。此外,还可以使用for循环直接遍历迭代器对象,从而取出其内部的每个元素。
示例代码如下:

func = lambda x: x+2
result = map(func, [1, 2, 3, 4, 5])
print(list(result))

上述示例,定义了一个匿名函数func,返回某个数加2以后的结果,接着调用map函数将[1, 2, 3, 4, 5]中的每个元素取出来,作为func的参数调用func函数,之后将结果转换为列表的形式显示。
程序输出结果为:
在这里插入图片描述
如果map函数中传入的function函数带有两个参数,那么map函数需要传递两个序列,代码如下:

result = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])
print(list(result))

运行结果如下:
在这里插入图片描述

filter函数

filter函数会对指定序列执行过滤操作。

filter函数的定义如下:

filter(function, itherable)

上述定义中,第一个参数function可以是函数名称或者None,第二个参数itherable可以是序列,支持迭代的容器或者迭代器。返回值为迭代器对象(在Python2中,filter函数的返回值是列表类型)。其中,function函数只能接收一个参数,而且该函数的返回值为布尔值。

filter函数的作用是以参数迭代器中的每个参数分别调用function函数,最后返回的迭代器包含调用结果为True的元素。
代码如下:

func = lambda x: x % 2
result = filter(func, [1, 2, 3, 4, 5])
print(list(result))

上述中,定义了一个匿名函数func,返回某个数取余以后的结果,接着调用filter函数将[1, 2, 3, 4, 5]中的每个元素取出来,作为func的参数调用func函数,之后将结果转换为列表的形式显示。
程序输出结果为:
在这里插入图片描述

reduce函数

reduce函数会对参数迭代器中的元素进行积累。

reduce函数的定义如下:

functools.reduce(function, itherable[, initializer])

上述定义中,function是一个带有两个参数的函数;第二个参数itherable是一个迭代器对象,initializer表示固定的初始值。reduce函数会依次从迭代器对象中取出每个元素,和上一次调用function的结果作为参数再次调用function函数。

在Python3中,reduce函数被放置在functools模块中,使用时需要先引入,代码如下:
from functools import reduce
func = lambda x, y: x + y
result = reduce(func, [1, 2, 3, 4, 5])
print(result)

from functools import reduce
func = lambda x, y: x + y
result = reduce(func, [1, 2, 3, 4, 5])
print(result)

上述示例中,首先引入了functools模块,然后定义了一个计算两个数的和的匿名函数。
由于在调用reduce函数时传入了func和序列,所以程序会把序列的每个元素取出来,和上次调用后的结果作为参数再次调用func函数,最后将结果返回给result。
运行结果:
在这里插入图片描述
如果在调用reduce函数时传入了initializer参数,那么function函数会以迭代器中的第一个元素与initializerd的和作为参数进行调用。
代码如下:

from functools import reduce
result = reduce(lambda x, y: x+y, [1, 2, 3, 4], 5)
print(result)

运行结果为:

15

此外。itherable参数还可以传入字符串类型,代码如下:

from functools import reduce
result = reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd')
print(result)

运行结果如下:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章