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

Python高阶函数:map(),reduce(),filter()及其常见用法

发布时间:2023-06-16 11:15:14

Python中的高阶函数指的是可以接受函数作为参数或返回函数作为结果的函数。Python中最常用的高阶函数有map(), reduce()和filter()函数。

1. map()函数

map()函数可以将一个函数应用到一个或多个可迭代对象中的每个元素上,并返回一个新的可迭代对象,包含所有函数的返回值。map()函数的用法如下:

map(function, iterable, ...)

其中,function是 个参数,表示对可迭代对象中的每个元素应用的函数;iterable是第二个参数,表示可迭代对象。

示例 1:

将一个列表中的元素都转换成字符串:

nums = [1, 2, 3, 4, 5]

str_nums = list(map(str, nums))

print(str_nums)  # ['1', '2', '3', '4', '5']

示例 2:

将两个列表中的元素一一对应相加:

a = [1, 2, 3]

b = [4, 5, 6]

c = list(map(lambda x, y: x + y, a, b))

print(c)  # [5, 7, 9]

2. reduce()函数

reduce()函数可以将一个函数应用到一个可迭代对象中的所有元素,并返回一个单一的结果值。reduce()函数的用法如下:

reduce(function, iterable[, initializer])

其中,function是 个参数,表示要应用于可迭代对象所有元素的函数;iterable是第二个参数,表示可迭代对象;initializer是可选的第三个参数,表示初始值。

示例 1:

求一个列表中所有元素的和:

from functools import reduce

nums = [1, 2, 3, 4, 5]

total = reduce(lambda x, y: x + y, nums)

print(total)  # 15

示例 2:

求一个列表中所有元素的积:

from functools import reduce

nums = [1, 2, 3, 4, 5]

total = reduce(lambda x, y: x * y, nums)

print(total)  # 120

3. filter()函数

filter()函数可以从一个可迭代对象中过滤出满足条件的元素,并返回一个新的可迭代对象,其中包含所有满足条件的元素。filter()函数的用法如下:

filter(function, iterable)

其中,function是 个参数,表示判断可迭代对象中每个元素是否符合条件的函数;iterable是第二个参数,表示可迭代对象。

示例 1:

过滤列表中的偶数:

nums = [1, 2, 3, 4, 5, 6]

even_nums = list(filter(lambda x: x % 2 == 0, nums))

print(even_nums)  # [2, 4, 6]

示例 2:

过滤掉一个字符串列表中的空串:

words = ['hello', '', 'world', 'python', '', '']

valid_words = list(filter(lambda x: len(x) > 0, words))

print(valid_words)  # ['hello', 'world', 'python']

结论:

map(), reduce()和filter()函数是Python中常用的高阶函数。它们可以帮助我们更简便地处理可迭代对象中的元素。