欢迎访问宙启技术站
智能推送

如何使用Python内置函数 map()和filter()以及它们的区别?

发布时间:2023-11-07 02:21:10

map()和filter()是Python中常用的内置函数,用于对可迭代对象进行处理。它们有着一些共同点,也有着一些区别。

1. map()函数:

map()函数的作用是将一个函数应用到可迭代对象(如列表、元组等)的每个元素上,并返回一个新的可迭代对象,其中包含了每个元素经过函数处理后的结果。

map()函数的语法如下:

map(function, iterable, ...)

其中,function是应用于每个元素的函数;iterable是一个或多个可迭代对象。

以下是一个map()函数的简单示例:

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)

print(list(squared_numbers))

输出结果为:[1, 4, 9, 16, 25],即将numbers列表中的每个元素都平方后得到的新列表。

2. filter()函数:

filter()函数的作用是使用一个函数来过滤可迭代对象中的元素,只保留满足函数条件的元素,并返回一个新的可迭代对象。

filter()函数的语法如下:

filter(function, iterable)

其中,function是用于过滤的函数;iterable是一个可迭代对象。

以下是一个filter()函数的简单示例:

def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5]
even_numbers = filter(is_even, numbers)

print(list(even_numbers))

输出结果为:[2, 4],即从numbers列表中筛选出偶数。

3. map()和filter()的区别:

- map()函数是将一个函数应用到可迭代对象的每个元素上,并返回一个包含每个元素经过函数处理后结果的新可迭代对象。而filter()函数则是对可迭代对象中的元素进行过滤,只保留满足条件的元素,返回一个新的可迭代对象。

- map()函数的返回值的长度与原可迭代对象相同,而filter()函数的返回值的长度可能会小于原可迭代对象的长度,因为它只保留满足条件的元素。

- map()函数的参数可以是一个或多个可迭代对象,而filter()函数的参数只能是一个可迭代对象。

- map()函数的函数参数可以是任意函数,而filter()函数的函数参数必须是返回布尔值的函数,用于判断元素是否应保留。

总之,map()和filter()是两个常用的内置函数,它们可以对可迭代对象进行处理。map()函数将一个函数应用到每个元素上并返回处理后的结果,而filter()函数根据条件筛选出满足条件的元素。它们的使用方法有些相似,但也有一些区别。