python10-高阶函数

 

 

 

 

 

 

 

 

 

def use_filer(l):
    """
    获取指定列表/元组中的奇数
    :param l: lsit/tuple
    :return:
    """
    rest = filter(lambda n:n % 2 != 0,l)
    return rest
if __name__ == '__main__':
    l = [1,2,3,4,5,6,7,8,9]
    rest = use_filer(l)
    print(list(rest))

  结果

[1, 3, 5, 7, 9]
filter函数的原理
def is_even(x):
    return x%2==0
tmp = filter(is_even,range(10))
list(tmp)
#最后一定要按照原来的类型转换回来
通过函数f筛选序列中的元素

filter(f,eq)
eq:待过滤的序列

f:过滤规则

tmp = filter(lamda n : n  % 2 == 0,range(10))

 

 

 

 

 

map是python内置函数,会根据提供的函数对指定的序列做映射。

map()函数的格式是:

map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

 

 

def use_filer(l):
    """
    获取指定列表/元组中的奇数
    :param l: lsit/tuple
    :return:
    """
    rest = filter(lambda n:n % 2 != 0,l)
    return rest
if __name__ == '__main__':
    l = [1,2,3,4,5,6,7,8,9]
    rest = use_filer(l)
    print(list(rest))

def pow_number(l):
    """
    给定列表,放回每一项的立方
    :param l:
    :return:
    """
    rest_list = []
    for x in l:
        rest_list.append(x*x*x)
    return rest_list

def pow_number_map(l):
    """
    :param l:
    :return:
    """
    #return  map(f,l)
    return  map(lambda n:n*n*n,l)



if __name__ == "__main__":
    rest = pow_number(l)
    print(rest)
    print("++++++++++++++++++++++")
    rest = pow_number_map(l)
    print(list(rest))

 

结果:

[1, 3, 5, 7, 9]
[1, 8, 27, 64, 125, 216, 343, 512, 729]
++++++++++++++++++++++
[1, 8, 27, 64, 125, 216, 343, 512, 729]

 

 

 

 

 

 

 

from functools import reduce
def get_sum(l):
    """
    求和
    :param l:
    :return:
    """
    rest = 0
    for i in l:
        rest += i
    return rest
def get_sum_use_py(l):
    """
    使用内置函数
    :param l:
    :return:
    """
    return sum(l)
def get_sum_use_reduce(l):
    """
    使用reduce函数求和
    :param l:
    :return:
    """
    return reduce(lambda n,m:n + m,l)

if __name__ == "__main__":
    l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(get_sum(l))
    print(get_sum_use_py(l))
    print("!!!!!!!!!!!!!!!!!!!")
    print(get_sum_use_reduce(l))

结果

 

 

 

python中的reduce
   python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:

 def myadd(x,y):  
        return x+y  
 sum=reduce(myadd,(1,2,3,4,5,6,7))  
 print(sum)

#结果就是输出1+2+3+4+5+6+7的结果即28
当然,也可以用lambda的方法,更为简单:

 sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7))  
 print sum 

在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.

 
 

 

posted @ 2020-04-10 21:36  linux——quan  阅读(212)  评论(0编辑  收藏  举报