filter和map是python中常常被使用的两个方法,这两个方法的使用方法很相似。
相同点:
第一个参数都是一个函数
第二个参数是一个可迭代序列
返回可迭代对象
不同点:
filter的第一个参数是函数,这个函数是用来判断条件的
map的第一个函数也是函数,但这个函数是用来做映射的。
lambda表达式是一行的函数。它们在其他语言中也被称为匿名函数。即,函数没有具体的名称,而用def创建的方法是有名称的。如果你不想在程序中对一个函数使用两次,你也许会想用lambda表达式,它们和普通的函数完全一样。而且当使用函数作为参数的时候,lambda表达式非常有用,可以让代码简单,简洁。lambda表达式返回的是function类型,说明是一个函数类型。
lambda表达式格式:
#lambda格式:
lambda arg1, arg2, arg3, ... argN : expression
#传统函数定义方式:
def (arg1,arg2,arg3, ... argN):
return expression
例子:
squareY=lambda y:y*y
squareY(5) #25
y=[lambda x:x*x,2,3]
y[0](y[1]) #4
mapped=map(lambda x:ord(x)+10,"ASDFJhrf") #ord()转换成十进制ascii
list(mapped) #[75, 93, 78, 80, 84, 114, 124, 112]
list(filter(lambda x:x%2==1,range(10))) #[1, 3, 5, 7, 9]
#lambda转化成传统函数形式:
def boring(x):
return ord(x)+10
list(map(boring,"sdftgh")) #[125, 110, 112, 126, 113, 114]
#map
a = [3,4,1,2,54,6]
b = list(map(lambda x: x**2,a))
print(b) #[9, 16, 1, 4, 2916, 36]
#filter
a = [3,4,1,2,54,6]
b = list(filter(lambda x:x>2,a))
print(b) #[3, 4, 54, 6]