5.4 python内置高阶函数之--map、reduce、filter、sorted
发布人:shili8
发布时间:2024-12-25 21:11
阅读次数:0
**Python 内置高阶函数**
在 Python 中,高阶函数是指那些接受其他函数作为参数或返回函数的函数。这些函数可以让我们以更灵活和高效的方式编写代码。在本文中,我们将重点讨论四个常用的内置高阶函数:`map()、reduce()、filter()` 和 `sorted()`。
###1. map()
`map()` 函数用于将一个或多个函数应用于一个序列中的每个元素。它返回一个迭代器,包含了所有函数的结果。
**示例代码**
def square(x): return x **2numbers = [1,2,3,4,5] squares = list(map(square, numbers)) print(squares) # 输出:[1,4,9,16,25] # 使用 lambda 表达式double_numbers = list(map(lambda x: x *2, numbers)) print(double_numbers) # 输出:[2,4,6,8,10]
**注释**
* `map()` 函数接受两个参数:一个函数和一个序列。
* 对于每个元素,`map()` 将应用该函数并将结果添加到迭代器中。
* 如果序列为空,则 `map()` 返回空迭代器。
###2. reduce()
`reduce()` 函数用于将多个值合并为一个值。它接受两个参数:一个函数和一个序列。
**示例代码**
from functools import reducedef add(x, y): return x + ynumbers = [1,2,3,4,5] result = reduce(add, numbers) print(result) # 输出:15# 使用 lambda 表达式product = reduce(lambda x, y: x * y, numbers) print(product) # 输出:120
**注释**
* `reduce()` 函数接受两个参数:一个函数和一个序列。
* 对于每个元素,`reduce()` 将应用该函数并将结果传递给下一次迭代。
* 如果序列为空,则 `reduce()` 返回初始值(如果提供了)或抛出异常。
###3. filter()
`filter()` 函数用于过滤一个序列中的元素。它返回一个迭代器,包含了所有通过测试的元素。
**示例代码**
def is_even(x): return x %2 ==0numbers = [1,2,3,4,5] even_numbers = list(filter(is_even, numbers)) print(even_numbers) # 输出:[2,4] # 使用 lambda 表达式odd_numbers = list(filter(lambda x: x %2 !=0, numbers)) print(odd_numbers) # 输出:[1,3,5]
**注释**
* `filter()` 函数接受两个参数:一个函数和一个序列。
* 对于每个元素,`filter()` 将应用该函数并将结果添加到迭代器中,如果函数返回 True,则保留该元素。
* 如果序列为空,则 `filter()` 返回空迭代器。
###4. sorted()
`sorted()` 函数用于对一个序列进行排序。它返回一个新列表,包含了所有元素按照指定顺序排列。
**示例代码**
numbers = [5,2,8,1,9] sorted_numbers = sorted(numbers) print(sorted_numbers) # 输出:[1,2,5,8,9] # 使用 reverse 参数进行倒序排序reverse_sorted_numbers = sorted(numbers, reverse=True) print(reverse_sorted_numbers) # 输出:[9,8,5,2,1]
**注释**
* `sorted()` 函数接受一个参数:一个序列。
* 对于每个元素,`sorted()` 将应用比较函数(如果提供了)并将结果添加到新列表中。
* 如果序列为空,则 `sorted()` 返回空列表。
在本文中,我们讨论了四个常用的内置高阶函数:`map()、reduce()、filter()` 和 `sorted()`。这些函数可以让我们以更灵活和高效的方式编写代码,例如将函数应用于序列中的每个元素、合并多个值为一个值、过滤序列中的元素以及对序列进行排序等。