龙空技术网

Python 3.X模块内置函数实例讲解(apply、filter、reduce、map)

dwolf79 612

前言:

目前朋友们对“python apply 两个参数”可能比较注重,你们都想要了解一些“python apply 两个参数”的相关内容。那么小编在网上搜集了一些有关“python apply 两个参数””的相关资讯,希望朋友们能喜欢,大家一起来了解一下吧!

前言

模块有一些内置属性,用于完成特定的任务,如__name__、__doc__。每个模块都有一个名称,例如,__name__用于判断当前模块是否是程序的入口,如果当前程序正在被使用,__name__的值为“__main__”。

Python提供了一个内联模块buildin。内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等功能。

内置函数实例演示

下面将介绍内联模块中常用的函数。

1.apply()

Python3中移除了apply函数,所以不再可用了。调用可变参数列表的函数的功能只能使用在列表添加*来实现。

2.filter()

filter()可以对某个序列做过滤处理,判断自定义函数的参数返回的结果是否为真来过滤,并一次性返回处理结果。filter()的声明如下所示。

class filter(object)

filter(function or None, iterable) --> filter object

下面这段代码演示了filter()过滤序列的功能。从给定的列表中过滤出大于0的数字。

def func(x):

if x > 0:

return x

print(filter(func, range(-9, 10)))#调用filter函数,返回的是filter对象

print(list(filter(func, range(-9, 10)))) #将filter对象转换为列表

输出结果:

<filter object at 0x1028d9400>

[1, 2, 3, 4, 5, 6, 7, 8, 9]

注意:filter()中过滤函数func()的参数不能为空。否则,没有可以存储sequence元素的变量,func()也不能处理过滤

3.reduce()

对序列中元素的连续操作可以通过循环来处理。例如,对某个序列中的元素累加操作。Python提供的reduce()也可以实现连续处理的功能。在Python2中reduce()存在于全局空间中,可以直接调用。而在Python3中将其移到了functools模块中,所以使用之前需要先引入。reduce()的声明如下所示。

reduce(func, sequence[, initial]) -> value

参数func是自定义的函数,在函数func()中实现对参数sequence的连续操作。

参数sequence待处理的序列。

参数initial可以省略,如果initial不为空,则initial的值将首先传入func()进行计算。如果sequence为空,则对initial的值进行处理。

reduce()的返回值是func()计算后的结果。

下面这段代码实现了对一个列表的数字进行累加的操作。

def sum(x, y):

return x+y

from functools import reduce

print(reduce(sum, range(0, 10)))

print(reduce(sum, range(0, 10), 10))

print(reduce(sum, range(0, 0), 10))

注意:如果用reduce()进行累计计算,必须在sum中定义两个参数,分别对应加法运算符两侧的操作数。

运行结果为:

45

55

10

4.map()

map()的功能非常强大,可以对多个序列的每个元素都执行相同的操作,并返回一个map对象。

map()的声明如下所示。

class map(object)

map(func, *iterables) --> map object

参数func是自定义的函数,实现对序列每个元素的操作。

参数iterables是待处理的序列,参数iterables的个数可以是多个。

map()的返回值是对序列元素处理后的列表。

下面这段代码实现了列表中数字的幂运算。

def power(x):

return x ** x

print('>>>>>>>打印map对象:')

print(map(power, range(1, 5)))

print(">>>>>>>转换为列表输出:")

print(list(map(power, range(1, 5))))

def power2(x, y):

return x ** y

print('>>>>>>>打印map对象:')

print(map(power2, range(1, 5), range(5, 1, -1)))

print(">>>>>>>转换为列表输出:")

print(list(map(power2, range(1, 5), range(5, 1, -1))))

运行结果为:

>>>>>>>打印map对象:

<map object at 0x10225f400>

>>>>>>>转换为列表输出:

[1, 4, 27, 256]

>>>>>>>打印map对象:

<map object at 0x10225f3c8>

>>>>>>>转换为列表输出:

[1, 16, 27, 16]

其他常用内置函数:

标签: #python apply 两个参数