Python中的map()和filter()函数是什么?如何使用它们?
Python中的map()和filter()函数是常用的函数式编程工具,用于对特定序列进行处理和筛选。这些函数简化了对序列的操作,让你可以更高效地开发代码。在这篇文章中,我们将介绍Python中的map()和filter()函数,以及如何使用它们。
1. map()函数
map()函数是Python中一个常用的高阶函数,它将一个函数作为参数,作用于一个列表或其他可迭代对象的每一个元素,并将其生成一个新的列表。map函数可以应用于不同类型的序列,如列表、元组、集合、等等。
map(function, iterable, ...)
参数说明:
- function:定义对每个元素执行的函数或方法。
- iterable:一个迭代器或者一个序列,它是map()函数作用的对象,可以是列表、元组、集合或其他可迭代对象。
- ...:可以提供多个可迭代对象,让function函数在所有可迭代对象的元素花式应用。
示例:
def square(x):
return x ** 2
nums = [1, 2, 3, 4, 5]
result = map(square, nums)
print(list(result)) # [1, 4, 9, 16, 25]
上面代码中,square()函数计算每个数字平方的结果。然后,map()函数的 个参数是square()函数,第二个参数是数字列表nums。map函数会计算nums列表中每个元素的平方,并返回一个新列表。
map()函数的用法可以创造出很多的变化,例如将文本中单词转为大写:
words = ['apple', 'banana', 'orange']
map_obj = map(str.upper, words)
print(list(map_obj)) # ['APPLE', 'BANANA', 'ORANGE']
上面代码中,map()函数被用于对word列表中每个字符串,应用str.upper函数并返回一个新列表。
2. filter()函数
filter()函数是Python中另一个常用的高阶函数,它接受一个函数为参数,并将其应用于一个可迭代对象的每个元素。与map()函数相似,filter()返回一个可迭代对象,包含满足函数条件的元素。
filter(function, iterable)
参数说明:
- function:定义对每个元素执行的函数或方法。可以包括额外的参数。
- iterable:一个迭代器或者一个序列,它是filter()函数作用的对象,可以是列表、元组、集合或其他可迭代对象。
示例:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def is_odd(x):
return x % 2 == 1
result = filter(is_odd, nums)
print(list(result)) # [1, 3, 5, 7, 9]
上面代码中,is_odd()函数检查是否为奇数,并返回True或False。filter()函数的 个参数是is_odd()函数,第二个参数是数字列表nums。filter函数会筛选出所有奇数,并返回一个新列表。
filter()函数的用法也可以创造出很多的变化,例如过滤掉文本列表中的空字符串:
words = ['apple', '', 'banana', '', 'orange']
res = list(filter(None, words))
print(res) # ['apple', 'banana', 'orange']
上面代码中,使用None值作为过滤条件筛选出非空单词,从而返回一个新列表。
总结
map()和filter()函数是Python常用的函数式编程工具。map()函数接受一个函数和一个可迭代的对象,将该函数应用到每个对象元素上,然后返回一个新的可迭代对象。filter()函数接受一个函数和一个可遍历的对象,根据该函数过滤符合条件的元素,并返回一个新的可迭代对象。这两个函数都大大简化了处理序列的操作,能够使你更高效地开发代码。
