Python中的高阶函数概览
Python是一种强大的编程语言,它支持高阶函数。高阶函数是指那些函数可以接受一个或多个函数作为参数,并/或者返回一个函数作为结果。Python的高阶函数使得编程更加简单、灵活和高效。本文将概述Python中的高阶函数。
1. map()
map() 函数用于对序列中的每个元素执行某个函数,并返回一个列表,该列表包含了函数返回值。其基本语法如下:
map(函数, 序列)
其中,函数可以是任意可调用对象,包括函数、lambda表达式等。序列是可迭代对象。
示例代码:
def square(x):
return x*x
lst = [1, 2, 3, 4, 5]
res = list(map(square, lst))
print(res)
输出:
[1, 4, 9, 16, 25]
上述代码中,我们定义了一个函数 square() ,它接受一个参数并返回其平方值。然后,我们定义了一个列表 lst ,它包含了 5 个整数。最后,我们使用 map() 函数对 lst 中的每个元素调用 square() 函数,并将返回的结果转换为列表并打印输出。
2. filter()
filter() 函数用于过滤序列中的元素,返回一个由所有符合条件的元素所组成的列表。其基本语法如下:
filter(函数, 序列)
其中,函数的返回值必须是 True 或 False。序列是可迭代对象。
示例代码:
def is_even(x):
return x % 2 == 0
lst = [1, 2, 3, 4, 5]
res = list(filter(is_even, lst))
print(res)
输出:
[2, 4]
上述代码中,我们定义了一个函数 is_even() ,它判断一个数是否为偶数,返回 True 或 False。然后,我们定义了一个列表 lst ,它包含了 5 个整数。最后,我们使用 filter() 函数过滤掉 lst 中的所有奇数,并将返回的结果转换为列表并打印输出。
3. reduce()
reduce() 函数用于对序列中的元素进行累积操作。其基本语法如下:
reduce(函数, 序列)
其中,函数接受两个参数,第一个参数表示上一次累积的结果,第二个参数表示当前的元素。序列是可迭代对象。
示例代码:
from functools import reduce
def add(x, y):
return x + y
lst = [1, 2, 3, 4, 5]
res = reduce(add, lst)
print(res)
输出:
15
上述代码中,我们首先引入了 reduce() 函数所在的模块。其次,我们定义了一个函数 add() ,它接受两个参数并返回它们的和。然后,我们定义了一个列表 lst ,它包含了 5 个整数。最后,我们使用 reduce() 函数对 lst 中的元素进行累加操作,并打印输出结果。
4. sorted()
sorted() 函数用于对序列进行排序操作。其基本语法如下:
sorted(序列, key=None, reverse=False)
其中,key 表示排序的关键字,reverse 表示排序的方式(升序或降序)。序列是可迭代对象。
示例代码:
lst = [3, 1, 4, 2, 5] res = sorted(lst) print(res)
输出:
[1, 2, 3, 4, 5]
上述代码中,我们定义了一个列表 lst ,它包含了 5 个整数。最后,我们使用 sorted() 函数对 lst 进行排序操作,并打印输出结果。
5. zip()
zip() 函数用于将多个序列合并成一个。其基本语法如下:
zip(序列1, 序列2, ..., 序列n)
其中,序列1、序列2、...、序列n 分别表示要合并的多个序列。zip() 函数将返回一个由元组组成的迭代器,每个元组由输入的多个序列中的一个元素组成。
示例代码:
lst1 = [1, 2, 3] lst2 = ['a', 'b', 'c'] res = list(zip(lst1, lst2)) print(res)
输出:
[(1, 'a'), (2, 'b'), (3, 'c')]
上述代码中,我们定义了两个列表 lst1 和 lst2,它们分别包含了 3 个元素。最后,我们使用 zip() 函数将 lst1 和 lst2 中的元素以元组的形式合并并打印输出。
以上是Python中常用的高阶函数。当然,这不是全部,Python还有其他很多的高阶函数,如 enumerate()、any()、all() 等。这些高阶函数使得Python的编程更加便捷、易读和优雅。
