四个重要的内置函数

filter:  将一个列表中的元素挨个拿出来,放到前面的函数中执行,将不满足的元素结果封装到一个迭代器对象中返回

map:将一个列表中的元素挨个拿出来,放到前面的函数中执行,并返回执行的结果封装到一个迭代器对象中返回

reduce:将一个列表中的元素从前到后,先拿出两个运用前面的函数计算,再将计算的结果与后面的元素运算,依此循环,知道发回最后一个元素的计算结果

lambda  :  lamdba  参数1,参数2....,参数n:  函数体   匿名函数,与前面三个结合用

 

#_*_encoding:utf-8_*_
from functools import reduce

#filter:将第二个可迭代参数中的每个参数拿出来放到第一个参数(函数)中运行,将返回的结果放到一个新的可迭代对象中返回
#       函数中要有判断语句,通过第一个判断的值才会放到可迭代对象中返回

def f1(a):
    if(a > 3):
        return (a+10)   #不会对返回值进行运算,只会返回经过判断的值
    print('a')

r1 = filter(f1,(5,6,1,2,3,4))
print(list(r1))    #[5, 6, 4]

#map:将第二个可迭代参数中的每个参数拿出来放到第一个参数(函数)中运行,将返回的结果放到一个新的可迭代对象中返回

def f2(a):
    return a*10

r2 = map(f2,(4,5,6,7,8,'X'))
print(list(r2))

#reduce:将第二个可迭代对象中的头两个参数取出放到第一个参数对应的方法中执行,
        # 再将结果作为一个参数与后面的一个参数组成两个参数到方法中执行,依次循环到最后返回最后一个参数与前面所有参数运算结果的结果

def f3(a,b):
    return a

r3 = reduce(f3,range(1,5))

print (r3)

#lambda:匿名函数  参数使用,分开,:后面函数返回值 ,没有return和判断

add = lambda x,y:x+y
print(add(3,4))


#lambda与filter,reduce的组合,实现1-100的偶数相加

sum = reduce(lambda x,y:x+y,filter(lambda x:x%2==0,range(1,101)))
print(sum)


#lambda与filter,reduce,map的组合,实现1-100的奇数相加

sum = reduce(lambda x,y:x+y,map(lambda x:x-1,filter(lambda x:x%2==0,range(1,101))))
print(sum)

  

posted on 2018-03-21 17:24  星际无垠  阅读(84)  评论(0)    收藏  举报