Python函数式编程:lambda、map、reduce等基础知识
Python 是一种高级编程语言,支持多种编程范式,包括面向对象、面向过程和函数式编程等。函数式编程是一种以函数为基本构建块的编程范式,它强调数据不可变性和函数的纯粹性,以及将函数作为一等公民。
Python 对函数式编程有很好的支持,提供了 lambda、map、reduce 等函数式编程特性,本文将介绍这些函数式编程基础知识。
1. lambda
lambda 是一种匿名函数,用于创建单行函数,通常用于需要传递函数作为参数的场合。lambda 函数实际上是一个表达式,包括输入参数、表达式和返回值,语法如下:
lambda arguments: expression
下面是一些使用 lambda 函数的例子:
# 用于排序 numbers = [(1,2), (3,1), (5,4), (0,2)] print(sorted(numbers, key=lambda x: x[1])) # 用于过滤 data = [1, 2, 3, 4, 5] print(list(filter(lambda x: x % 2 == 0, data)))) # 用于求和 data2 = [1, 2, 3, 4, 5] print(reduce(lambda x, y: x+y, data2))
2. map
map 函数可以将一个序列或迭代器中的每个元素都按照某个规则进行转换,然后返回一个新的序列或迭代器。
map(function, iterable)
其中 function 是一个函数,iterable 是一个序列或迭代器。下面是一个使用 map 函数的例子:
data = [1, 2, 3, 4, 5] result = map(lambda x: x * 2, data) print(list(result)) # [2, 4, 6, 8, 10]
3. reduce
reduce 函数可以对一个序列或迭代器中的元素进行迭代,并使用指定的函数递归地将前两个元素合并为一个,然后将结果与下一个元素合并,最终返回一个单一的值。
reduce(function, iterable[, initializer])
其中 function 是一个二元函数,用于合并元素,initializer 是可选的初始值。下面是一个使用 reduce 函数的例子:
from functools import reduce data = [1, 2, 3, 4, 5] result = reduce(lambda x, y: x + y, data) print(result) # 15
4. filter
filter 函数用于对一个序列或迭代器进行过滤,其中传入的函数返回 True 的元素将被保留,而返回 False 的元素将被过滤掉。
filter(function, iterable)
其中 function 是一个返回布尔值的函数,iterable 是一个序列或迭代器。下面是一个使用 filter 函数的例子:
data = [1, 2, 3, 4, 5] result = filter(lambda x: x % 2 == 0, data) print(list(result)) # [2, 4]
总结
Python 的函数式编程支持是非常强大的,并且可以提高代码的可读性和可重用性。本文介绍了 lambda、map、reduce 和 filter 等函数式编程基础知识,希望能够帮助读者更好地理解函数式编程范式。
