目录python
lambda 函数也叫匿名函数,也就是没有名字的函数算法
lambda匿名函数的格式:冒号前是参数,能够有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。函数
一般和内置函数一块儿使用code
lambda函数的特色和使用场景
特色对象
''' 从函数命名的角度:匿名,直接返回可供调用的值 从输入输出的角度:支持多个输入参数,但只支持一个表达式 从函数功能的角度:结构简单,无须定义函数名。但所能实现的功能也极其受限。 从访问变量的角度:只支持访问lambda本身定义的变量。不支持外部变量访问 从运行效率的角度:lambda实际上仍开辟了一个内存单元,并无提高运行效率 '''
lambda函数复制给变量:减小函数定义的麻烦,同时支持代码复用内存
add=lambda x,y:x+y print(add(1,2))
将lambda函数做为参数传递给其余函数字符串
dict1 = { 'tank': 1000, 'egon': 500, 'sean': 200, 'jason': 500 } # 获取dict1中薪资最大的人的名字 # 字符串的比较: ASCII print(max(dict1, key=lambda x: dict1[x]))
# dict1 = { # 'tank': 100, # 'egon': 500, # 'sean': 200, # 'jason': 50 # } # # new_list = ['egon', 'sean', 'tank', 'jason'] # new_list = sorted(dict1, key=lambda x: dict1[x], reverse=True) # print(new_list)
python中的map()函数是一个内置的函数,通常用法是map(function, iterable)。it
须要传入一个函数,这个函数能够是内置的,也能够是本身定义,也能够是匿名函数。第二个参数是一个可迭代对象,如列表,字符串等等。返回的是一个map对象,注意不是列表不能直接输出,能够经过for循环或者list()来显示io
map() 会根据提供的函数对指定序列作映射。用前面的函数,依次映射执行后面的可迭代对象for循环
l = ['qwe','eqwed','eqweddf','ewq'] res = map(lambda x : '666' + x,l) for i in res: print(i) res = map(lambda a : a + '.jpg' if a[-1] != 'd' else a,l) for i in res: print(i)
reduce()函数在库functools里,若是要使用它,要从这个库里导入
from functools import reduce
reduce函数与map函数有不同地方,map操做是并行操做,reduce函数是把多个参数合并的操做,也就是从多个条件简化的结果,在计算机的算法里,大多数状况下,就是为了简单化
from functools import reduce a = reduce(lambda x,y: x+y,[1,2,3,4]) print(a) #10
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由filtre对象。
该接收两个参数,第一个为函数,第二个为序列,序列的每一个元素做为参数传递给函数进行判,而后返回 True 或 False,最后将返回 True 的元素放到新列表中。
filter(function, iterable)
l = [1,2,3,4,5,6,7,8,8] nl = filter(lambda x:x % 2 == 0,l) for i in nl: print(i)