浅谈Python之高阶函数和匿名函数
高阶函数
在Python中,函数是一等公民,可以像变量一样被赋值、作为参数传递,因此,我们可以把一个函数作为参数传递给另一个函数,或者把一个函数作为另一个函数的返回值,这种函数就被称为高阶函数。
高阶函数的优点在于可以让我们更加方便地编写代码,并且使代码看起来更加清晰。
示例1
下面是一个比较典型的高阶函数示例,它接收一个函数和一个序列作为参数,然后对序列中的每个元素都依次进行操作。
具体代码如下:
def map_func(func, seq):
return [func(x) for x in seq]
def square(x):
return x * x
print(map_func(square, [1, 2, 3, 4, 5]))
在这里,我们定义了一个map_func函数,它接收两个参数func和seq,其中func是一个函数,seq是一个序列。然后我们定义了一个square函数,它返回一个数的平方。
最后,我们调用了map_func函数,并将square函数和序列[1, 2, 3, 4, 5]作为参数传递给它。最终的结果是:[1, 4, 9, 16, 25],即对序列中的每个元素进行了平方操作。
示例2
下面是另一个高阶函数示例,它接收一个函数和一个条件作为参数,然后对满足条件的元素进行操作。
具体代码如下:
def filter_func(func, seq):
return [x for x in seq if func(x)]
def is_even(x):
return x % 2 == 0
print(filter_func(is_even, [1, 2, 3, 4, 5]))
在这里,我们定义了一个filter_func函数,它接收两个参数func和seq,其中func是一个函数,seq是一个序列。然后我们定义了一个is_even函数,它返回一个数是否为偶数。
最后,我们调用了filter_func函数,并将is_even函数和序列[1, 2, 3, 4, 5]作为参数传递给它。最终的结果是:[2, 4],即只返回序列中的偶数。
匿名函数
在Python中,我们还可以使用lambda表达式定义匿名函数。匿名函数也称为lambda函数,它是一种不需要定义函数名称的函数。
匿名函数常用于简单的函数操作,例如对一个序列进行排序或过滤等操作。
示例1
下面是一个使用lambda表达式定义匿名函数的示例,它对序列进行排序。
具体代码如下:
numbers = [6, 2, 8, 4, 3, 1]
sorted_numbers = sorted(numbers, key=lambda x: x)
print(sorted_numbers)
在这里,我们定义了一个序列numbers,然后调用了sorted函数,将numbers作为参数传递给它。在sorted函数中,我们使用了lambda表达式对每个元素进行排序。最终的结果是:[1, 2, 3, 4, 6, 8],即对序列中的元素从小到大进行了排序。
示例2
下面是另一个使用lambda表达式定义匿名函数的示例,它对序列进行过滤操作。
具体代码如下:
numbers = [6, 2, 8, 4, 3, 1]
filtered_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(filtered_numbers))
在这里,我们定义了一个序列numbers,然后调用了filter函数,将numbers和一个lambda表达式作为参数传递给它。lambda表达式在这里用来过滤序列中的偶数元素。最终的结果是:[6, 2, 8, 4],即返回序列中的偶数元素。
结语
以上就是Python中高阶函数和匿名函数的一些基本介绍和实际应用。高阶函数和匿名函数的应用可以使我们的代码能够更加方便地实现一些简单的操作,对于提高我们的开发效率也有很大的帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈python之高阶函数和匿名函数 - Python技术站