1. map(), lambda
如果要对一个列表内的每个元素都进行平方,有如下方法:
① 第一种:
a = list(range(1,10))
b = [i**2 for i in a]
print(b)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
② 第二种:
a = list(range(1,10))
c = map(lambda x:x**2,a)
c = list(c)
print(c)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
第二种方法我们称之为:函数式编程。
第一种方法是指定了一个 i
代表 列表 a
中的每一个元素;但是第二种方法中的 lambda x
是直接针对 列表a
,然后再通过 map()
函数映射到列表a
中的每一个元素。最终要通过 list()
才能将最终的 c
打印出来,因为在python3 中只有其他函数调用 map 函数的才能返回结果
再举一个例子:
a = list(range(1,10))
b = list(range(10,20))
c = map(lambda x,y:x*y,a,b)
print(list(c))
[10, 22, 36, 52, 70, 90, 112, 136, 162]
数组对应的元素进行相乘
2. reduce(), lambda
从上面的例子中可以知道 map函数相当于建立映射,在第一个例子中把 x--> a
建立映射,在第二个例子中把 x, y ---> a, b
建立映射。
但是 reduce() 函数是进行递归运算的函数;reduce命令首先将列表的前两个元素作为函数的参数进行运算,然后将运算结果与第三个元素一起作为函数的参数进行运算;同样地,再把结果与第四个元素一起作为函数的参数进行运算,直到列表结束。下面通过举例来看:
from functools import reduce
a = list(range(1,10))
b = reduce(lambda x,y:x*y,a)
print(b)
362880
因为这个是进行递归运算,所以最终的结果b
不是一个列表,而是一个数字,所以不用再用 list
函数进行处理
3. filter(), lambda
filter() 函数是用于筛选符合条件的函数,举例来看:
a = list(range(1,10))
b = filter(lambda x:x**2<5 and x**3>7,a)
print(list(b))
结果:
C:\Users\dell\Anaconda3\python.exe "D:/pycharm project/test2.py"
[2]
Process finished with exit code 0
最终得到的结果也需要使用list
函数进行处理,理由同map
函数一样。