【Python 匿名函数】零基础也能轻松掌握的学习路线与参考资料

Python 匿名函数是一种特殊的函数,也称为 lambda 函数。它允许我们创建一种简单的函数,一行代码就可以搞定。可能你会发现,在使用Python时,经常可以看到lambda关键字,以lambda开头的就是匿名函数。本文将详细介绍Python 匿名函数的学习路线,包括基础概念、优点、使用方法、应用实例以及参考资料和优秀实践等方面。

一、基础概念

Python 匿名函数是一种没有名称的函数,即没有使用 def 或者别名进行声明的函数。也就是说,没有办法把这个函数的调用再次分配给其他函数或者变量。它的语法结构如下:

lambda argument_list: expression

其中, argument_list是形式参数列表,可以是任何数量的变量;expression是一个表达式,也可以是任何数量的表达式,也可以包含有 if 和 for 语句。

二、优点

  1. 简介清晰

Python 匿名函数只有一行代码,没有复杂的语法结构,非常容易理解和记忆。

  1. 方便快捷

Python 匿名函数可以在任何需要函数的地方使用,而且不用给它起名字。这样在代码编写上,可以很方便地节省时间。

  1. 可读性

Python 匿名函数可以通过一行代码表示复杂的函数,增强代码可读性。

三、使用方法

Python 匿名函数可以直接使用 lambda 关键字定义,语法格式为 lambda arguments: expression。其中 arguments 表示匿名函数的参数列表,而 expression 则表示匿名函数的返回值。

  1. 传入参数

首先,我们需要通过匿名函数传入一些参数。这里我们示例传入了一个 x 参数,代码如下:

f = lambda x: x*2
print(f(4))

以上代码输出结果为:8

  1. 接收多个参数

lambda 支持接收多个参数,但是它们之间必须由逗号分隔。我们来看一下下面的实例:

f = lambda x, y: x + y
print(f(2, 3))

以上代码输出结果为:5

  1. 带默认值参数

除了传入参数,我们还可以通过 lambda 函数的形参列表设置默认值参数。这里我们示例传入一个 x 参数和一个默认值参数 y,代码如下:

f = lambda x, y=2: x*y
print(f(3))

以上代码输出结果为:6

  1. 函数作为参数

在实际编程中,我们经常遇到需要把函数当做参数传进另一个函数里处理的情况,这时可以使用 lambda 函数进行简单的处理。如果要传入一个处理平方的函数,代码如下:

f = lambda x, y: y(x*x)
print(f(2, lambda x:x**2))

以上代码输出结果为:8

四、应用实例

Python 匿名函数适用于一些简单的场合,不太适合写复杂的运算和逻辑。下面,我们将介绍匿名函数的一些常见应用。

  1. 排序

在 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]]

  1. 过滤

在 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]

  1. 映射

在 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]

  1. 小结

经过以上的应用实例,我们可以看到,Python 匿名函数可以用于排序过程、过滤列表、映射序列等场合,都特别适合使用。

五、参考资料

本文所介绍的 Python 匿名函数,属于 Python编程的简单难度,适合初学者使用。如果你对 Python 匿名函数有更多的需求,可以看一下以下参考资料:

  • 《Python 基础教程》
  • 《Python 编程:从入门到实践》
  • 《Python Cookbook》

六、优秀实践

  1. 带有条件语句的匿名函数:
f = lambda x: x ** 2 if x > 5 else x ** 3
print(f(4))   # 64
print(f(6))   # 36
  1. 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
  1. 将列表中的空字符串去掉:
l = ['hello', '', 'world', '', '', 'Python']
result = list(filter(lambda x: x != '', l))
print(result)  # ['hello', 'world', 'Python']
  1. 对列表进行排序:
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 匿名函数的学习路线,掌握了这个简单的知识点,对于日常的编程将会带来很大的帮助。

你可能感兴趣的:(python,学习,开发语言)