1.python函数式编程-map函数

编程方法论

  1. 面向过程
  2. 函数式
  3. 面向对象

面向过程

将编程过程拆分成多个步骤,在函数中按照每个步骤进行编程;

函数式编程

编程语言定义的函数+数学意义的函数

1、不可变,不用变量保存状态,不修改变量;

2、第一类对象,函数即变量---------高阶函数:把函数当做参数传递给另外一个函数;返回值中包含函数。(装饰器

3、尾调用:在函数的最后一步调用另外一个函数(最后一行不一定是函数的最后一步)

  调用栈:在系统调用递归函数的时候不是最后一步(区别最后一行),则需要保留当前层的状态。如果是最后一步进入递归,则不用保留当前层状态,性能更强。(递归函数的优化则需要进入尾调用,进入尾递归

函数:

map:处理序列中的每个元素,得到的结果是一个“列表”,该“列表”元素个数及位置与原来一样

filter:遍历序列中的每个元素,判断每个元素得到的布尔值,如果是True则留下来

reduce:将多个数值合并到一块


map函数

将方法和要处理的数据通过参数传入函数中,在函数调用的时候可以指定不同的方法,方法更加灵活。

1 num_1 = [1,2,3,10,5,7,9]
2 def mapfunc(func,array):
3     ret = []
4     for i in array:
5         ret.append(func(i))
6     return ret
7 
8 print(mapfunc(lambda x:x+1,num_1))    #执行自增加一
9 print(mapfunc(lambda x:x**2,num_1))    #执行二次方

执行结果:

[2, 3, 4, 11, 6, 8, 10]
[1, 4, 9, 100, 25, 49, 81]

 map函数

1 num_1 = [1,2,3,10,5,7,9]
2 res = map(lambda x:x+1,num_1)   #res为迭代器,只能调用一次,一般使用list方法来查看迭代器的值
3 print(res)
4 print(list(res))

执行结果:

<map object at 0x000001F93A610160>
[2, 3, 4, 11, 6, 8, 10]

猜你喜欢

转载自www.cnblogs.com/chrrydot/p/9784981.html