Python高级函数:lambda、map和filter
在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函数来筛选出所有的边缘像素,并返回一个新的图片。
