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

Python高级函数:lambda、map和filter

发布时间:2023-06-03 19:44:29

在Python中,高级函数是指能够接受函数作为参数、返回函数作为结果或者能够将函数存储在变量中的函数。在这些高级函数中,最常用的是lambda、map和filter函数。

1. lambda函数

lambda函数也称为匿名函数,它是一种简单而强大的函数定义形式。与通常的函数定义不同,lambda函数只有一个表达式,而没有函数名。因此,lambda函数也常用于函数内部作为参数传递。

举个例子,我们可以定义一个简单的lambda函数来对两个数相加:

func = lambda x, y: x + y
print(func(3, 4))  # 输出结果为 7

在上面这个例子中,我们通过lambda函数定义了一个叫做func的函数,用来计算两个参数的和。这个lambda函数的定义形式为:

lambda x, y: x + y

这里我们指定了两个参数x和y,以及要执行的表达式x+y。

类似于其他的函数定义,lambda函数也可以用于其他的函数调用中。比如,我们可以在sort函数中使用lambda函数来按照文本长度排序:

words = ["apple", "orange", "banana", "watermelon", "grape"]
words.sort(key=lambda s: len(s))
print(words)  # 输出结果为 ['apple', 'grape', 'orange', 'banana', 'watermelon']

在这个例子中,我们定义了一个lambda函数来计算字符串的长度,然后将其作为sort函数的关键字参数传递。这样,我们就可以根据字符串的长度来进行排序了。

2. map函数

map函数是一种高阶函数,它接受两个参数,一个是函数,另一个是可迭代对象。map函数会将可迭代对象的每个元素传递给函数,然后返回一个新的迭代器,其中包含了函数的处理结果。

举个例子,我们可以使用map函数来将一个列表中的所有数字都平方:

numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x**2, numbers)
print(list(squares))  # 输出结果为 [1, 4, 9, 16, 25]

在这个例子中,我们定义了一个lambda函数来计算平方,然后使用map函数将这个lambda函数应用于numbers列表中的每个元素。最后,我们通过list函数将map函数返回的迭代器转换为了一个列表。

map函数非常适合处理大量数据。例如,在处理一张图片时,我们可以使用map函数来对每个像素进行处理,并返回一个新的图片。

3. filter函数

filter函数也是一种高阶函数,它接受两个参数,一个是函数,另一个是可迭代对象。filter函数会将可迭代对象的每个元素传递给函数,然后返回一个新的迭代器,其中包含了函数返回值为True的元素。

举个例子,我们可以使用filter函数来从一个列表中筛选出所有的偶数:

numbers = [1, 2, 3, 4, 5]
evens = filter(lambda x: x%2 == 0, numbers)
print(list(evens))  # 输出结果为 [2, 4]

在这个例子中,我们定义了一个lambda函数来判断一个数是否为偶数,然后使用filter函数将这个lambda函数应用于numbers列表中的每个元素。最后,我们通过list函数将filter函数返回的迭代器转换为了一个列表。

filter函数也非常适合处理大量数据。例如,在处理一张图片时,我们可以使用filter函数来筛选出所有的边缘像素,并返回一个新的图片。