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

Python函数式编程:lambda、map和filter的使用

发布时间:2023-06-24 13:35:18

Python是一种多范式编程语言,它支持面向对象、函数式和过程式编程。函数式编程是一种编程范式,它的核心思想是将计算过程视为函数之间的相互转换和组合,强调没有“副作用”,即一个函数的输出结果仅取决于它的输入参数,而不是外部状态的改变。Python中的函数式编程有三个核心工具--lambda、map和filter。

1. lambda

lambda是匿名函数,它可以像普通函数一样使用。lambda函数可以有任意数量的参数,但只能有一个表达式。这个表达式执行完毕后,它的结果就是这个lambda函数的返回值。而且lambda函数与普通函数一样,也可以作为输入参数传递给其他函数使用。一般来说,当一个函数只用一次时,使用lambda函数会方便些。

使用lambda函数的语法如下:

lambda arguments: expression

例如,定义一个函数计算两个数的和:

def add(x, y):

    return x+y 

等价于使用lambda函数:

add = lambda x,y: x+y

2. map

map函数是Python内置的高阶函数,它的作用是对可迭代对象中的每个元素都应用一个函数,并输出一个新的可迭代对象。map函数的语法如下:

map(function, iterable, ...)

其中function是应用于每个元素的函数,iterable是一个或多个可迭代对象,比如列表、元组或字符串。当map函数只有一个可迭代对象作为参数时,返回的结果也是一个可迭代对象。

例如,将一个列表中的每个元素平方:

def square(x):

    return x**2

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

squared = map(square, lst)

print(list(squared))   #[1, 4, 9, 16, 25]

使用lambda函数在一行代码中实现:

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

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

print(list(squared))   #[1, 4, 9, 16, 25]

3. filter

filter函数是Python内置的高阶函数,它通过过滤删除了可迭代对象中不符合特定条件的元素,并返回一个新的可迭代对象。filter函数的语法如下:

filter(function, iterable)

其中function是应用于每个元素的函数,iterable是一个可迭代对象。如果把function设置为None,filter函数就会默认过滤掉iterable中所有false值。

例如,筛选列表中的偶数:

def is_even(x):

    return x%2 == 0

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

even = filter(is_even, lst)

print(list(even))  #[2, 4]

使用lambda函数在一行代码中实现:

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

even = filter(lambda x: x%2 == 0, lst)

print(list(even))  #[2, 4]

在函数式编程中,lambda、map和filter是必不可少的工具。它们可以让我们以更高效的方式处理数据,简化代码并增强可读性。不过,要注意在使用lambda函数时,不要过度使用它,因为它会导致代码可读性下降。