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

Python高阶函数:定义和使用

发布时间:2023-05-31 17:26:03

Python高阶函数

在python中,函数是一级对象(first-class object)。这意味着函数可以作为参数传递给另一个函数,也可以作为另一个函数的返回值返回。高阶函数(Higher-order functions)是指将函数作为参数或返回值的函数。

高阶函数的使用

高阶函数可以让代码更加简洁、优雅和易于维护。在Python中,常见的高阶函数包括map、filter、reduce、sorted等。以下是这些函数的介绍及使用方法。

map函数

map函数是将一个函数作用于一个迭代器中的所有元素,返回一个新的迭代器。对于每个元素,map函数将输入函数应用于该元素,并将结果添加到新的迭代器中。

语法:

 map(function, iterable)

参数:

function:作用于每个元素的函数。

iterable:一个需要作用的迭代器。

返回值:

返回一个新的可迭代对象,其中包含应用函数后的元素。

示例:

将一个列表里面的元素都平方:

>>> lst = [1, 2, 3, 4, 5]

>>> squared  = list(map(lambda x:x**2, lst))

>>> print(squared)

输出结果:

[1, 4, 9, 16, 25]

filter函数

filter函数将一个函数作用于一个可迭代对象的每个元素,并返回一个新的序列,其中仅包含使函数返回True的元素。

语法:

 filter(function, iterable)

参数:

function:作用于每个元素的函数。

iterable:一个需要作用的迭代器。

返回值:

返回一个迭代器,其中仅包含通过函数测试的元素。

示例:

在一个列表中查找所有偶数:

>>> nums = [1, 2, 3, 4, 5, 6, 7, 8]

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

>>> print(even_nums)

输出结果:

[2, 4, 6, 8]

reduce函数

reduce函数对一个序列中的元素进行累积操作,并返回累计的结果。

语法:

 reduce(function, iterable)

参数:

function:接受两个参数,并返回一个结果的函数。

iterable:一个需要作用的迭代器。

返回值:

返回一个值,其中为iterable中所有元素的累积结果。

示例:

将一个列表中的元素相乘:

>>> import functools

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

>>> product = functools.reduce(lambda x, y: x*y, nums)

>>> print(product)

输出结果:

120

sorted函数

sorted函数是Python中用于排序序列的函数。sorted函数接收一个序列作为输入,返回一个新的列表,其中包含原始序列的元素的排序副本。

语法:

 sorted(iterable, *, key=None, reverse=False)

参数:

iterable:需要排序的序列。

key:用于确定排序顺序的函数。如果指定,则在每个元素上调用该函数,并根据返回值进行排序。

reverse:如果为True,则降序排序;否则为升序。

返回值:

返回一个包含排序结果的新列表。

示例:

将一个列表按照元素长度从小到大排序:

>>> lst = ['apple', 'orange', 'pear', 'banana']

>>> length_sorted = sorted(lst, key=lambda x:len(x))

>>> print(length_sorted)

输出结果:

['pear', 'apple', 'banana', 'orange']

结论

高阶函数可以让代码更加直观、易于理解和更加简洁。在Python中使用高阶函数可以减少代码量,并且可以更加方便地应用函数逻辑。map,filter,reduce和sorted函数是常见的高阶函数,它们可以帮助我们更快、更好地解决问题。