当我们在使用Python编程时,有时候我们只需要定义一个简单的函数,这个函数可能只会被使用一次,那么此时使用匿名函数就显得非常方便。
什么是匿名函数
在Python中,匿名函数也被称为lambda函数,是一种临时的,只能在一处使用的函数,通常用于需要一个函数,但是又不想特意为之创建一个函数的情况。
匿名函数的语法形式如下:
lambda args: expression
其中:
lambda
关键字用于声明这是一个lambda函数;args
代表lambda函数的参数列表,可以包含多个参数,用逗号分隔;expression
代表这个lambda函数要执行的表达式。
我们可以用lambda args: expression
的语法形式来表示任意一个带有参数列表和函数体的函数。最终lambda函数的返回值是表达式的返回值。
匿名函数的应用场景
我们通常会在以下两种情况下使用匿名函数:
- 当我们需要一个函数执行一些非常简单的任务,比如为了排序列表,我们需要给
sort()
方法传递一个函数作为参数,但是定义一个增加元素顺序的函数可能会很繁琐,此时我们可以使用匿名函数,通过在调用的时候直接声明一个匿名函数来对元素进行排序; - 当我们需要在有限的空间内编写代码(比如在lambda表达式中使用),但是仍然需要定义一个函数时。
示例1:使用匿名函数过滤列表
我们来看一个使用匿名函数过滤列表的示例:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)
上述代码中,nums
是一个包含1到10的数字的列表,我们通过使用filter()
函数和lambda函数来获取列表中的所有偶数。这里filter()
函数用来过滤列表,它接收两个参数:
function
参数,用来指定过滤的条件,可以是匿名函数;iterable
参数,表示要过滤的列表。
最终我们使用list()
函数将返回的迭代器对象转换成了一个列表,结果为:
[2, 4, 6, 8, 10]
示例2:使用匿名函数排序
我们再来看一个使用匿名函数进行排序的示例:
students = [('Tom', 75), ('Jerry', 82), ('Mike', 93), ('Chris', 85), ('Bob', 67)]
students.sort(key=lambda x: x[1])
print(students)
上述代码中,students
是一个列表,包含多个元组,每个元组表示学生的姓名和分数。我们通过使用sort()
函数,传递一个根据学生分数排序的lambda函数来对学生列表进行排序。在这里,key
参数用于指定我们要根据哪个元素进行排序,结果为:
[('Bob', 67), ('Tom', 75), ('Jerry', 82), ('Chris', 85), ('Mike', 93)]
小结
在Python的编程过程中,使用匿名函数可以极大地提高代码的简洁性和可读性。我们通常会在需要临时函数且函数体比较简单的情况下使用匿名函数,常见的应用场景包括列表过滤、排序和加减运算等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中的匿名函数使用简介 - Python技术站