python filter,map,reduce,lambda
1. filter
filter(func,[1,2,3,4]) 将迭代器中的没一个元素,作为参数传递个func, func 只能return True 和False ,filter将func返回为真的参数,生成一个新的迭代器并返回
def fuca(args): if args>3: return True else: return False print(list(filter(fuca,[1,2,3,4,5,6])))#返回一个迭代器对象
模拟filter实现
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- def my_filter(func,args): lista = [] for i in args: res = func(i) if res: lista.append(i) return lista def funa(a): if len(a)>3: return True else: return False listb = my_filter(funa,['aaa','bb','ccccc','dddddd']) print(listb)
2.map
map(func,[1,2,3,4,5]) 将迭代器中的每一个元素作为参数,给func 进行加工操作,将 func的返回值生成一个迭代器并返回
def func(args): return args ** 2 print(list(map(func,[1,2,3,4]))) #返回一个迭代对象
lista = [1,2,3,4]
listb = [4,3,2,1]
map(func,lista,listb) 可以接受多个迭代器,将每一个迭代器的第N个元素,同时作为参数传递个func,加工后,将func的返回值生成一个新的迭代器返回
def func(argsa,argsb): return (argsa,argsb) lista = [1,2,3,4] listb = [4,3,2,1] print(list(map(func,lista,listb)))
3.reduce
在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里
from functools import reduce
from functools import reduce def func(argsa,argsb): return argsa+argsb print(reduce(func,[1,2,3,4,5])) #第一次调用func(1,2) #第二次调用func(3,3) #第三次调用func(6,4) #第四次调用func(10,5) 最后返回15
4.lambda
生成一个比较简单的函数 f1 = lambda x,y : x + y 其中冒号前面是参数,冒号后面是返回, 通过 f1(3,4) 调用

浙公网安备 33010602011771号