Python 匿名函数是一种特殊的函数,也称为 lambda 函数。它允许我们创建一种简单的函数,一行代码就可以搞定。可能你会发现,在使用Python时,经常可以看到lambda关键字,以lambda开头的就是匿名函数。本文将详细介绍Python 匿名函数的学习路线,包括基础概念、优点、使用方法、应用实例以及参考资料和优秀实践等方面。
一、基础概念
Python 匿名函数是一种没有名称的函数,即没有使用 def 或者别名进行声明的函数。也就是说,没有办法把这个函数的调用再次分配给其他函数或者变量。它的语法结构如下:
lambda argument_list: expression
其中, argument_list是形式参数列表,可以是任何数量的变量;expression是一个表达式,也可以是任何数量的表达式,也可以包含有 if 和 for 语句。
二、优点
- 简介清晰
Python 匿名函数只有一行代码,没有复杂的语法结构,非常容易理解和记忆。
- 方便快捷
Python 匿名函数可以在任何需要函数的地方使用,而且不用给它起名字。这样在代码编写上,可以很方便地节省时间。
- 可读性
Python 匿名函数可以通过一行代码表示复杂的函数,增强代码可读性。
三、使用方法
Python 匿名函数可以直接使用 lambda 关键字定义,语法格式为 lambda arguments: expression
。其中 arguments 表示匿名函数的参数列表,而 expression 则表示匿名函数的返回值。
- 传入参数
首先,我们需要通过匿名函数传入一些参数。这里我们示例传入了一个 x 参数,代码如下:
f = lambda x: x*2
print(f(4))
以上代码输出结果为:8
- 接收多个参数
lambda
支持接收多个参数,但是它们之间必须由逗号分隔。我们来看一下下面的实例:
f = lambda x, y: x + y
print(f(2, 3))
以上代码输出结果为:5
- 带默认值参数
除了传入参数,我们还可以通过 lambda 函数的形参列表设置默认值参数。这里我们示例传入一个 x 参数和一个默认值参数 y,代码如下:
f = lambda x, y=2: x*y
print(f(3))
以上代码输出结果为:6
- 函数作为参数
在实际编程中,我们经常遇到需要把函数当做参数传进另一个函数里处理的情况,这时可以使用 lambda 函数进行简单的处理。如果要传入一个处理平方的函数,代码如下:
f = lambda x, y: y(x*x)
print(f(2, lambda x:x**2))
以上代码输出结果为:8
四、应用实例
Python 匿名函数适用于一些简单的场合,不太适合写复杂的运算和逻辑。下面,我们将介绍匿名函数的一些常见应用。
- 排序
在 Python 中,我们可以使用 sort() 函数对列表进行排序,其中 key 参数可以传入一个函数作为排序的关键字。如果我们向根据列表的元素的第二个元素进行排序,可以如下面的代码:
a = [[1, 2], [4, 1], [9, 10], [13, 5]]
a.sort(key=lambda x: x[1])
print(a)
以上代码输出结果为:[[4, 1], [13, 5], [1, 2], [9, 10]]
- 过滤
在 Python 中,我们可以使用 filter() 函数过滤掉一系列的元素。通常情况下我们会使用 def 函数定义一个 filter 函数。但我们这里可以通过 lambda 函数来替代 def 函数。如下代码,我们定义一个 filter_results 函数,返回奇数列表:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filter_results = filter(lambda x: x % 2 != 0, numbers)
print(list(filter_results))
以上代码输出结果为:[1, 3, 5, 7, 9]
- 映射
在 Python 中,我们可以使用 map() 函数映射一系列的元素,通常情况下我们会使用 def 函数定义一个 map 函数。但我们这里可以通过 lambda 函数来替代 def 函数。通过以下代码,我们将数字列表中的每个数字都乘以 2:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
double_nums = list(map(lambda x: x * 2, nums))
print(double_nums)
以上代码输出结果为:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
- 小结
经过以上的应用实例,我们可以看到,Python 匿名函数可以用于排序过程、过滤列表、映射序列等场合,都特别适合使用。
五、参考资料
本文所介绍的 Python 匿名函数,属于 Python编程的简单难度,适合初学者使用。如果你对 Python 匿名函数有更多的需求,可以看一下以下参考资料:
- 《Python 基础教程》
- 《Python 编程:从入门到实践》
- 《Python Cookbook》
六、优秀实践
- 带有条件语句的匿名函数:
f = lambda x: x ** 2 if x > 5 else x ** 3
print(f(4)) # 64
print(f(6)) # 36
- lambda表达式计算三角形面积:
import math
area = lambda a, b, c: math.sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))/4
print(area(3,4,5)) # 输出: 6.0
- 将列表中的空字符串去掉:
l = ['hello', '', 'world', '', '', 'Python']
result = list(filter(lambda x: x != '', l))
print(result) # ['hello', 'world', 'Python']
- 对列表进行排序:
students = [{'name': 'Tom', 'score': 76}, {'name': 'Jack', 'score': 65}, {'name':'Rose', 'score': 90}]
students.sort(key=lambda x: x['score'])
print(students) # [{'name': 'Jack', 'score': 65}, {'name': 'Tom', 'score': 76}, {'name': 'Rose', 'score': 90}]
以上是 Python 匿名函数的学习路线,掌握了这个简单的知识点,对于日常的编程将会带来很大的帮助。