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) 调用

 

posted @ 2017-04-23 11:09  1916  阅读(111)  评论(0)    收藏  举报