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

大白话解释Python中的十个函数式编程函数

发布时间:2023-06-08 19:12:30

函数式编程是一种特定的编程范式,其中函数作为一等公民,也就是说函数就像变量一样可以被传递、赋值和返回。Python 中也有一些可以支持函数式编程的函数,这些函数大多数与迭代器和生成器有关,它们可以让程序员编写出更加简单、优雅、高效的代码。现在我们来一起看看 Python 中的十个函数式编程函数,并了解它们的用法和实现。

1. Map() 函数

map() 函数可以接受一个函数和一个或多个序列作为参数,它会将序列中的每个元素依次传递给函数进行处理,并最终返回处理后的结果组成的序列。大多数情况下,可以用 for 循环来替代 map() 函数,但是 map() 函数可在一行代码中完成一切。

示例:

def square(num):
    return num * num

lst = [1, 2, 3, 4, 5]
result = list(map(square, lst))
print(result)

>>> [1, 4, 9, 16, 25]

2. Filter() 函数

filter() 函数可以接受一个函数和一个序列作为参数,它会将序列中的每个元素依次传递给函数进行处理,并最终返回处理结果为 True 的元素组成的序列。filter() 函数可以很容易地对序列进行过滤。

示例:

def even(num):
    return num % 2 == 0

lst = [1, 2, 3, 4, 5]
result = list(filter(even, lst))
print(result)

>>> [2, 4]

3. Reduce() 函数

reduce() 函数是 Python3 中被移到了 functools 模块下,它可以接受一个函数和一个序列作为参数,将序列中的当前元素和累加结果一起传递给函数进行处理,最终返回累加的结果。reduce() 函数需要通过 import functools 先引入。

示例:

import functools

def multiply(x, y):
    return x * y

lst = [1, 2, 3, 4, 5]
result = functools.reduce(multiply, lst)
print(result)

>>> 120

4. Zip() 函数

zip() 函数可以接受一个或多个序列作为参数,并将序列中相同位置上的元素一起组合成元组然后返回。如果传入参数的序列长度不相等,zip() 函数会以最短的序列长度为准。

示例:

lst1 = [1, 2, 3]
lst2 = ['a','b','c']
result = list(zip(lst1, lst2))
print(result)

>>> [(1, 'a'), (2, 'b'), (3, 'c')]

5. Any() 函数

any() 函数可以接受一个序列作为参数,如果序列中的任意元素为 True,就返回 True,否则返回 False。

示例:

lst = [False, True, False]
result = any(lst)
print(result)

>>> True

6. All() 函数

all() 函数可以接受一个序列作为参数,如果序列中的所有元素都为 True,就返回 True,否则返回 False。

示例:

lst = [False, True, False]
result = all(lst)
print(result)

>>> False

7. Enumerate() 函数

enumerate() 函数可以接受一个序列作为参数,并将序列中每个元素和对应索引值组成元组返回,这个函数经常在 for 循环中使用,能够让遍历时对元素统一编号。

示例:

lst = ['a', 'b', 'c']
result = list(enumerate(lst))
print(result)

>>> [(0, 'a'), (1, 'b'), (2, 'c')]

8. Sorted() 函数

sorted() 函数可以接受一个序列作为参数,并将序列按照默认或自定义的排序规则进行排序,最终返回一个排序后的新序列。默认情况下,序列中的每个元素按照从小到大的顺序排序。

示例:

lst = [3, 1, 4, 2, 5]
result = sorted(lst)
print(result)

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

9. Max() 函数

max() 函数可以接受一个或多个参数,并返回这些参数中最大的那个,如果参数传入的是一个序列,则会返回序列中最大的值。

示例:

lst = [3, 1, 4, 2, 5]
result = max(lst)
print(result)

>>> 5

10. Min() 函数

min() 函数可以接受一个或多个参数,并返回这些参数中最小的那个,如果参数传入的是一个序列,则会返回序列中最小的值。

示例:

lst = [3, 1, 4, 2, 5]
result = min(lst)
print(result)

>>> 1

这就是 Python 中的十个函数式编程函数,它们都是非常好用、高效、简洁的,可以极大地提升您的编程效率和代码质量。可以在开发新的项目时借鉴这些函数,大大减少冗余代码和出错率。