python lambda 表达式与 filter map 函数

filter 与 map 函数

filter和map是python中常常被使用的两个方法,这两个方法的使用方法很相似。

相同点:

第一个参数都是一个函数

第二个参数是一个可迭代序列

返回可迭代对象

不同点:

filter的第一个参数是函数,这个函数是用来判断条件的

map的第一个函数也是函数,但这个函数是用来做映射的。

lambda 表达式

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]

你可能感兴趣的:(python,开发语言,lambda)