函数式编程:mmutable),都由纯函数(pure function)的形式组成。这里的纯函数,是指函数本身相互独立、互不影响,对于相同的输入,总会有相同的输出,没有任何副作用。
匿名函数
在python中的匿名函数就是lambda表达式
lambda是一种表达式而并非一种语句,可以用在列表里或者做为函数的参数
定义方式
调用方式
f = lambda 形参1,形参2 : 返回值
print(f(1,2))
对比普通函数
def add(x,y):
return x+y
print(add(1,2))
f = lambda x,y: x+y
print(f(1,2))
Map与函数式编程
#Map与函数式编程
函数 map(function, iterable) 的第一个参数是函数对象,第二个参数是一个可以遍历的集合,它表示对 iterable 的每一个元素,
都运用 function 这个函数。
list_x = [1, 2, 3, 4, 5]
# 定义一个返回平方数的函数
f = lambda x: x * x
# 使用map把list_x的数每一个放入f函数中并且映射到原来list_x的原本元素位置
list_result = map(f, list_x)
# lambda简写
list_result = map(lambda x: x * x, list_x)
# list_result本身为一个对象,需要进行list()方法转化为列表输出
print(list(list_result))
# map函数后队两个进行操作
list_z = [1, 2, 3, 4, 5]
list_y = [2, 3, 4, 5, 6, 7]
# 注意 如果两个列表的元素个数不相等,最后的结果列表里的元素个数为形参里元素最少的列表的元素个数
list_result = map(lambda x, y: x * y, list_z, list_y)
print(list(list_result))
Reduce与函数式编程
Reduce为连续计算方法,
from functools import reduce
list_x= [1, 2, 3, 4, 5]
'''
reduce方法里面的第一个参数函数必须有两个形参
计算的方式
将序列中第一个和第二个值通过放入函数计算得到结果,再将结果作为函数的第一个形参,序列中的第三个值作为第二个形参进行计算。。。。
在本案例中计算的方式为 (((1+2)+3)+4)+5
'''
list_result=reduce(lambda x,y: x+y,list_x)
print(list_result) #15
注意使用reduce前需要导入functools包
Filter与函数编程
filter(function, iterable) 函数,function 同样表示一个函数对象。filter() 函数表示对 iterable 中的每个元素,都使用 function 判断,并返回 True 或者 False,最后将返回 True 的元素组成一个新的可遍历的集合,不能直接打印要。
# 求偶数
list_number=[1,2,3,4,5,6]
list_odd=filter(lambda x:x%2==0, list_number)
for k in list_odd:
print(k)