如何使用Python的lambda、map和filter函数

2022-06-04 10:10:17 浏览数 (1)

标签:Python与Excel,pandas

Python lambda函数,又称匿名函数,与我们使用def…语句创建的函数不同,可以命名函数,lambda函数不需要名称。当需要一个快速且不需要经常重复使用的(通常是一个小的)函数时,它非常有用。单独使用Lambda函数可能没有太多意义。lambda函数的价值在于它在哪里与另一个函数(例如map()或filter())一起使用。

lambda函数介绍

lambda函数:

  • 不需要名字
  • 可以接受任意数量的参数
  • 仅返回1个表达式

让我们看一个普通def函数与lambda函数的示例。我们创建一个函数来计算一个值的平方。

图1

lambda是匿名函数。在上面的示例中,我为它指定了一个名称lambda_sq,但是lambda函数语法实际上不需要名称。

lambda 参数: 表达式

map()函数介绍

map()函数基本上对迭代器(例如列表或元组)中的每个项运行特定的函数。例如,计算1-10之间数字的平方。首先创建一个平方函数,它返回给定数字的平方。然后,创建一个包含从1到10的数字的列表。注意,下面的代码输出——a是一个map对象,它是一个迭代器,可以使用list(a)将其转换为一个列表。

图2

在本示例中,必须预先定义一个计算数字平方的函数。假设这个square()函数只被map函数使用一次,然后就不再使用了。在这种情况下,最好使用lambda函数来计算平方。下面是使用lambda函数的相同示例。

图3

filter()函数介绍

filter()函数类似于map(),然而,map()在一个迭代器上执行一个特定的函数,并返回该迭代器中的每个元素。而filter()只返回一个函数返回True的元素。让我们看一个例子,有一个包含数字1-20的列表,只想返回奇数。首先,我们创建一个包含1-20的值的列表。

图4

然后,让我们定义一个函数来检查输入是否为奇数,如果给定的数字为奇数,该函数将返回True。

图5

现在让我们先用map()函数试试,看看我们得到了什么。

图6

正如所料,map()函数接受is_odd(),并应用于每一项(1-20),返回的值是一个包含True或False的迭代器,这是is_odd()返回的值。

当我们使用filter()替换map()时,我们得到的是:

图7

同样,这应该是filter()函数“筛选”列表并返回is_odd()返回为True的元素。

了解了lambda、map和filter,下一步做什么?

pandas数据框架中的任何列(即pandas系列)都是迭代器,因此可以在pandas数据框架上使用上述相同的技术!后续我们将讲解如何创建一些复杂的计算列。

注:本文学习整理自pythoninoffice.com。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞