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)

浙公网安备 33010602011771号