python中的map函数,reduce函数,lambda函数

来源:互联网 发布:人工智能行业报告 编辑:程序博客网 时间:2024/05/19 11:49

今天主要学习了一些py高阶函数,所谓高阶函数其实就是指函数的参数可以接收别的函数

下面贴一下今天写的练习

# coding:utf-8import mathdef get_result(a,b,*fns):    return [fn(a+b) for fn in fns]a = float(input('a:'))b = float(input('b:'))print('结果是:',get_result(a,b,math.ceil,math.floor))


# coding:utf-8from math import sqrtdef jisuan(x,*kw):    answer=[f(x) for f in kw]    return answerprint(jisuan(9,sqrt,abs))

map

map函数根据提供的函数对指定的序列做映射,定义

>>> map(lambda x:x+2, [1, 2, 3])[3, 4, 5]>>> map(lambda x:x+2, (1, 2, 3))[3, 4, 5]>>> map(lambda x:x+2, [1, 2], [1, 2])Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: <lambda>() takes exactly 1 argument (2 given)

reduce

reduce函数会对参数序列中元素进行累积。定义:
reduce(function, sequence[, initial]) -> value

>>> reduce(lambda x, y:x+y, [1,2,3,4])10>>> reduce(lambda x, y:x+y, [1,2,3,4], 10)20

lambda

编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

举例对比(列表中的元素平方):

>>> map(lambda x:x*x, range(5))[0, 1, 4, 9, 16]>>> def sq(x):...     return x * x... >>> map(sq, range(5))[0, 1, 4, 9, 16]
复制代码


阅读全文
0 0
原创粉丝点击