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

Python中的map()和filter()函数的用法和区别

发布时间:2023-11-02 08:15:46

map()和filter()是Python中常用的内置函数,用于对可迭代对象进行转换和筛选操作。虽然这两个函数的功能有些相似,但它们的用法和区别还是有所不同的。

首先来看一下map()函数,它的语法如下:

map(function, iterable, ...)

其中,function是一个函数,可以是内置函数,也可以是自定义函数;iterable是一个可迭代对象,例如列表、元组等。

map()函数的作用是将指定函数应用于可迭代对象的每个元素,并返回一个新的迭代器。具体来说,map()函数会将迭代器中的每个元素传递给函数进行处理,然后将处理后的结果依次放入一个新的迭代器中。

下面是一个示例,使用map()函数将列表中的每个元素转为大写字母:

words = ['apple', 'banana', 'orange']
result = map(str.upper, words)
print(list(result))  # ['APPLE', 'BANANA', 'ORANGE']

在上面的代码中,str.upper是一个内置函数,用于将字符串转为大写字母。map(str.upper, words)会将字符串列表words中的每个元素传递给str.upper函数,并返回一个新的迭代器,最后使用list()函数将迭代器转为列表。

接下来看一下filter()函数,它的语法如下:

filter(function, iterable)

其中,function是一个函数,可以是内置函数,也可以是自定义函数;iterable是一个可迭代对象。

filter()函数的作用是对可迭代对象进行筛选,返回一个新的迭代器,该迭代器中只包含满足指定条件的元素。

下面是一个示例,使用filter()函数从列表中筛选出大于10的元素:

numbers = [5, 12, 8, 10, 15]
result = filter(lambda x: x > 10, numbers)
print(list(result))  # [12, 15]

在上面的代码中,lambda函数用于定义一个简单的条件判断,筛选出大于10的元素。filter(lambda x: x > 10, numbers)会将列表numbers中的每个元素传递给lambda函数进行判断,返回一个新的迭代器,最后使用list()函数将迭代器转为列表。

总结一下map()和filter()函数的区别:

- map()函数会将可迭代对象的每个元素传递给指定函数进行处理,返回一个新的迭代器,用于保存处理后的结果;

- filter()函数会对可迭代对象进行筛选,返回一个新的迭代器,用于保存满足指定条件的元素;

- map()函数的函数参数可以执行任意操作,转换前后的元素数量不一定相同,而filter()函数的函数参数必须是一个返回bool值的条件判断,转换前后的元素数量相同或减少;

- map()函数的返回结果可以是任意类型的元素,而filter()函数的返回结果只能是布尔值为True的元素。

综上所述,map()和filter()函数是Python中常用的内置函数,用于对可迭代对象进行转换和筛选操作。它们在用法和功能上略有不同,但都可以提高代码的简洁性和可读性。