Python知识点:lambda, map, filter

简介: 通过示例介绍Python中的lambda,map,filter 函数的使用方法。 lambdalambda 操作符(或 lambda函数)通常用来创建小巧的,一次性的匿名函数对象。它的基本语法如下: lambda arguments : expression lambda操作符可以有任意数量的参数,但是它只能有一个表达式,且不能包含任何语句,返回一个可以赋值给任何变量的函数对象。

通过示例介绍Python中的lambda,map,filter 函数的使用方法。
QQ_20190314094928

lambda
lambda 操作符(或 lambda函数)通常用来创建小巧的,一次性的匿名函数对象。它的基本语法如下:

lambda arguments : expression

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

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

def add(x, y):
    return x+y

# call the function
add(1, 2)  # Output: 3

上述函数名为add, 它需要两个参数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的基本语法如下:**

map(function_object, iterable1, iterable2, ...)

map函数需要一个函数对象和任意数量的iterables,如list,dictionary等。它为序列中的每个元素执行function_object,并返回由函数对象修改的元素组成的列表。
示例如下:

def add2(x):
    return x+2

map(add2, [1,2,3,4])  # Output: [3,4,5,6]

在上面的例子中,map对list中的每个元素1,2,3,4执行add2函数并返回[3,4,5,6]
接着看看如何用map和lambda重写上面的代码:

map(lambda x: x+2, [1,2,3,4])  #Output: [3,4,5,6]

仅仅一行即可搞定!

使用map和lambda迭代dictionary:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
  
map(lambda x : x['name'], dict_a) # Output: ['python', 'java']
  
map(lambda x : x['points']*10,  dict_a) # Output: [100, 80]

map(lambda x : x['name'] == "python", dict_a) # Output: [True, False]

以上代码中,dict_a中的每个dict作为参数传递给lambda函数。lambda函数表达式作用于每个dict的结果作为输出。

map函数作用于多个iterables

list_a = [1, 2, 3]
list_b = [10, 20, 30]
  
map(lambda x, y: x + y, list_a, list_b) # Output: [11, 22, 33]

这里,list_a和list_b的第i个元素作为参数传递给lambda函数。

Python3中,map函数返回一个惰性计算(lazily evaluated)的迭代器(iterator)或map对象。就像zip函数是惰性计算那样。
我们不能通过index访问map对象的元素,也不能使用len()得到它的长度。
但我们可以强制转换map对象为list:

map_output = map(lambda x: x*2, [1, 2, 3, 4])
print(map_output) # Output: map object: 



list_map_output = list(map_output)

print(list_map_output) # Output: [2, 4, 6, 8]

filter
filter的基本语法如下:

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

和map函数一样,filter函数也返回一个list,但与map函数不同的是,filter函数只能有一个iterable作为输入。
示例:
返回偶数:

a = [1, 2, 3, 4, 5, 6]
filter(lambda x : x % 2 == 0, a) # Output: [2, 4, 6]

过滤dicts的list:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

filter(lambda x : x['name'] == 'python', dict_a)
# Output: [{'name': 'python', 'points': 10}]

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

list_a = [1, 2, 3, 4, 5]

filter_obj = filter(lambda x: x % 2 == 0, list_a) # filter object 

even_num = list(filter_obj) # Converts the filer obj to a list

print(even_num) # Output: [2, 4]

有关Python技术文章优先发布在我的个人博客:猿人学
公众号:猿人学Pyhton

目录
相关文章
|
5天前
|
存储 数据处理 Python
python 之map、zip和filter迭代器示例详解
python 之map、zip和filter迭代器示例详解
9 0
|
5天前
|
程序员 Python
python lambda表达式表达式详解及应用
python lambda表达式表达式详解及应用
22 0
|
7天前
|
Python
【Python 基础】解释map函数的工作原理
【5月更文挑战第6天】【Python 基础】解释map函数的工作原理
|
7天前
|
Python
Python中的匿名函数,即lambda函数
【5月更文挑战第6天】Python中的匿名函数,即lambda函数,用于简洁地定义小型函数,无需`def`关键字。示例:`double = lambda x: x * 2`,可将5加倍。常用于排序(自定义比较)、映射(如求平方)和过滤列表,以及作回调函数。然而,它们不适用于多行代码或复杂逻辑,此时需用常规函数。
4 0
|
24天前
|
数据可视化 Python
Python模型评估与选择:面试必备知识点
【4月更文挑战第17天】本文深入探讨了Python模型评估与选择在面试中的关键点,包括性能度量、过拟合与欠拟合识别、模型比较与选择、模型融合和偏差-方差权衡。强调了避免混淆评估指标、忽视模型验证和盲目追求高复杂度模型的常见错误,并提供相关代码示例,如交叉验证、网格搜索和超参数调优。通过理解这些概念和技巧,可在面试中展示出色的数据科学能力。
33 12
|
27天前
|
存储
07-python函数的进阶-函数的多返回值/函数的多种传参方式/匿名函数/lambda函数
07-python函数的进阶-函数的多返回值/函数的多种传参方式/匿名函数/lambda函数
|
1月前
|
Python
python中的filter
【4月更文挑战第4天】`Python`的`filter()`函数用于从序列中过滤出符合条件的元素,返回迭代器。它接受一个判断函数和一个可迭代对象作为参数,对可迭代对象的每个元素应用函数,返回值为`True`的元素会被保留。若需得到列表,需用`list()`转换。例如,下面的代码定义了一个检测偶数的函数`is_even()`,并用它过滤出一个数字列表中的偶数,最终打印出这些偶数。
19 0
python中的filter
|
1月前
|
Python
python中的map(function, iterable...)
【4月更文挑战第4天】`map()`是Python内置函数,用于对一个或多个可迭代对象的每个元素应用指定函数,返回一个迭代器。基本语法是`map(function, iterable, ...)`。示例中,定义函数`multiply_by_two(x)`将元素乘以2,`map()`将此函数应用于列表`numbers`,返回迭代器`doubled_numbers`,需通过`list()`转为列表显示结果,输出为[2, 4, 6, 8, 10]。注意,`map()`返回的是迭代器而非列表。
13 0
python中的map(function, iterable...)
|
2月前
|
Python
Python内置函数map、split、join讲解
Python内置函数map、split、join讲解
38 0
|
2月前
|
程序员 数据处理 开发者
【Python小技巧】通过实例说明推导式,条件表达式和Lambda函数
【Python小技巧】通过实例说明推导式,条件表达式和Lambda函数
25 2