通过示例深入了解Python中lambda、map、filter函数的使用方法

借助示例讲解Python里lambda、map以及filter函数的运用方式

通过示例深入了解Python中lambda、map、filter函数的使用方法

lambda

lambda操作符(即lambda函数)常常被用于创建小巧的、一次性的匿名函数对象。其基本语法如下:

lambda arguments : expression

lambda操作符能有任意数量参数。它只能有一个表达式。它不能包含任何语句。它返回一个函数对象。该函数对象可赋值给任何变量。

下面通过一个例子来理解一下。首先看看一个Python函数:

def add(x, y):
    return x+y
    
参数为1和2
# Output: 3

函数名为add。它需要两个参数,分别是x和y。它会返回x与y的和。

接下来,我们把上面的函数变成一个lambda函数:

add = lambda x, y : x + y
print(add(1,2))  # Output: 3

在lambda x, y : x + y里 x和y是函数参数 x+y是表达式 该表达式被执行 并返回结果

lambda x,y:x+y返回的是函数对象。该函数对象可赋值给任何变量。在本例中函数对象被赋给了add变量。若查看add的type,会看到它是function

type(add)  # Output: function

绝大多数lambda函数 会被当作一个参数 传递给一个函数 这个函数需要函数对象作为参数 例如map函数 reduce函数 filter函数等

map

map的基本语法如下:

将函数对象应用于可迭代对象1、可迭代对象2等。

map函数需要一个函数对象以及任意数量的可迭代对象比如列表、字典等。它针对序列里的每个元素执行function_object。它会返回一个列表。该列表由函数对象修改后的元素构成。

示例如下:

def add2(x):
    return x+2
    
对列表[1,2,3,4]应用函数add2进行映射操作 输出结果为[3,4,5,6]

在上面的例子里 map 对 list 中的每个元素 1 执行 add2 函数 对元素 2 执行 add2 函数 对元素 3 执行 add2 函数 对元素 4 执行 add2 函数 并返回[3,4,5,6]

接着看看如何用map和lambda重写上面的代码:

最终输出[3,4,5,6]

仅仅一行即可搞定!

使用map和lambda迭代dictionary:

dict_a等于[{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
  
输出结果为['python', 'java']
对字典dict_a应用lambda函数x:x['points']*10 输出为[100, 80] 对字典dict_a应用lambda函数x:x['name'] == "python" 输出为[True, False]

在上述代码里,dict_a中的每一个dict被当作参数传送给lambda函数。lambda函数表达式作用于每个dict后产生的结果用作输出。

map函数作用于多个iterables

list_a = [1, 2, 3]
list_b = [10, 20, 30]
  
最终输出结果为[11, 22, 33]

在这里,list_a的第i个元素被当作参数传递给lambda函数。同时,list_b的第i个元素也被当作参数传递给lambda函数。

在Python3里 map函数返回一个迭代器或map对象 该迭代器或map对象进行惰性计算 如同zip函数进行惰性计算一样

我们无法借助index来访问map对象的元素。我们也不能运用len()获取它的长度。

但我们可以强制转换map对象为list:

map_output等于对列表[1, 2, 3, 4]中的每个元素x应用lambda函数x乘以2所得到的结果 其中lambda函数为x乘以2 列表为[1, 2, 3, 4] 对其进行映射操作得到map_output
打印(map_output)  # 输出:映射对象:list_map_output = 列表(map_output)
打印列表映射输出 输出为 2 4 6 8


filter

filter的基本语法如下:

filter函数接受两个参数,一个是函数对象,另一个是可迭代对象

filter函数需要两个参数。function_object返回一个布尔值。对iterable的每一个元素调用function_object。filter只返回满足function_object为True的元素。

filter函数返回一个list。这一点和map函数一样。但filter函数与map函数不同。filter函数只能有一个iterable作为输入。

示例:

返回偶数:

a = [1, 2, 3, 4, 5, 6]
过滤函数,对a中的元素进行判断,判断条件为元素除以2的余数等于0,输出结果为[2, 4, 6]

过滤dicts的list:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
使用lambda函数x:x['name']=='python'对dict_a进行过滤#输出为[{'name': 'python', 'points': 10}]

filter函数在Python3中返回一个惰性计算的filter对象或迭代器这一点和map一样。我们不能通过index访问filter对象的元素。我们也不能使用len()得到它的长度。

list_a = [1, 2, 3, 4, 5]
打印列表 输出为[2, 4]

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

33阅读

外国教程python,python编程教学视频

2026年09月02日

27阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

27阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

23阅读