python之lambda、filter、map、reduce的用法说明

1、lambda()

lambda()的主体是一个表达式,起到一个函数速写的作用,python中单行最小函数。

lambda函数的语法只包含一个语句,

语法公式: lambda arg1,arg2,.....argn:expression

lambda x:x if x>1 else y

expression1 if A else expression2

如果A为True,条件表达式的结果为expression1,否则为expression2 

注意:

1、包含的表达式不能超过一个

2、不能有return

3、lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

 (1)只有一个参数

a=lambda x:x
print(a(2)) 

(2)有多个参数

a=lambda x,y,z:(
print(a(1,2,3)) 

(3)有默认参数

注:默认参数要放到非默认参数后面,否则报错

a=lambda x,y=3:x+y 
print(a(4))        

 (4)有if表达式

a=lambda x:'我爱你' if x>1 else '分手吧' 
print(a(2))                        
print(a(1))                        

2、filter()

(1)描述

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,返回True或False,将返回True的元素放到新列表中。

(2)公式

filter(function, iterable)

注:function是判断函数

    iterable是可迭代对象

返回值是列表

正确的例子1:

# 过滤列表中所有奇数                                        
def jishu(n):                                      
    return n % 2 == 1                              
newlist=list(filter(jishu,[1,2,3,4,5,6,7,8,9,10])) 
print(newlist)                                     

 

错误的例子:

def jishu(n):                                 
    return n % 2 == 1                         
newlist=filter(jishu,[1,2,3,4,5,6,7,8,9,10])) 
print(newlist)                                

原因是是因为没将filter函数转换成list。

 例子二:

非0即为真

print(list(filter(lambda x:x-4,range(10))))  

3、map()

python3中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。

需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数。

第二个参数是一个可迭代对象,如列表,字符串等等。返回的是一个map对象,注意

不是列表不能直接输出,可以通过for循环或者list()来显示

例如:

def square(x):
    return x*x
a=map(square,[1,2,3]) 
print(a)        
#输出为<map object at 0x0033CFB0>   可以看出map返回的实际上是一个map对象
print(list(a))  
#输出为[1, 4, 9]   通过list()方式 显示出来   

#也可以通过for循环来取出内容

ls=[]
for i in a:
    ls.append(i)
print(ls)
#输出为[1, 4, 9]

其实map,不止能传入一个可迭代对象做为参数。也可以传入两个或者多个。

若是传入的多个可迭代对象长度不相同,则按最短的长度进行处理

l1='asdf'                              
l2='gds'                               
print(list(map(lambda x,y:x+y,l1,l2))) 

4、reduce()

reduce()函数也是Python内置的一个高阶函数。在python3中如果使用reduce需要先导入

from functools import reduce

reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,

reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

例如:

from functools import reduce         
a=reduce(lambda x,y:x+y,range(101))  
print(a)                             

 

posted on 2019-03-04 14:54  礼哥宝典  阅读(407)  评论(0)    收藏  举报