Python函数式编程之lambda表达式
一:匿名函数的定义
lambda parameter_list: expression
二:三元表达式
条件为真时返回的结果 if 条件判断 else 条件为假的时候返回的结果
三:map
map(func(arg1, arg2...), list1_arg1, list2_arg2),
对后面输入的list分别执行前面的函数(数学的映射)
四:reduce
reduce(func(arg1, arg2...), list1_arg, init_value),
连续计算,连续调用lambda表达式
五:filter
filter(func(arg1, arg2...), list1_arg1)
当条件满足的时候数据会被过滤出来!
六:函数式编程和命令式编程
def
if --else
for
map reduce filter
lambda
函数式编程的思想。。。。
命令式编程的思想。。。。
函数式编程关心数据的映射,命令式编程关心解决问题的步骤
函数式编程:
(1)指的是函数与其他数据类型一样,处于平等地位,
可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值
(2) 只用"表达式",不用"语句"
Code:
1 from functools import reduce 2 # ----------------------------------------------------------------# 3 # 匿名函数的定义 4 # ----------------------------------------------------------------# 5 6 7 def add(x, y): 8 """ 9 add x and y 10 :param x: x can be str or num 11 :param y: y can be str or num 12 :return: x+y 13 """ 14 return x + y 15 16 17 # lambda parameter_list: expression 18 user_sum = lambda arg1, arg2: arg1 + arg2 19 20 my_sum = user_sum(2, 2) 21 print(my_sum) 22 23 # ----------------------------------------------------------------# 24 # 三元表达式 25 # ----------------------------------------------------------------# 26 a, b = 1, 2 27 r = a if a > b else b 28 print(r) 29 30 # ----------------------------------------------------------------# 31 # map(func, list),对后面输入的list分别执行前面的函数(数学的映射) 32 # ----------------------------------------------------------------# 33 34 myListMap1 = [1, 2, 3, 4] 35 myNewListMap1 = map(lambda x: x ** 2, myListMap1) # 返回为map类型的数据结构 36 print(type(myNewListMap1)) 37 print('myNewListMap1:', list(myNewListMap1)) # 转换为list 38 39 40 # 两个或者多个参数的map函数的使用 41 # 当两个参数种元素的个数不相同的时候会截断 42 myListMap2 = [1, 2, 3, 4] 43 myNewListMap2 = map(lambda x, y: x + y, myListMap1, myListMap2) 44 print('myNewListMap2:', list(myNewListMap2)) 45 46 47 # ----------------------------------------------------------------# 48 # reduce(func, list)连续计算,连续调用lambda表达式 49 # ----------------------------------------------------------------# 50 51 myListReduce = [1, 2, 3, 4] 52 # 把list中的值一个一个放进lambda中 53 r = reduce(lambda x, y: x + y, myListReduce) 54 print(r) 55 56 # 对第一个函数参数进行初始化 57 r = reduce(lambda x, y: x + y, myListReduce, 10) 58 print(r) 59 60 # filter 61 myListFilter = [3, 5, 6, 7, 8, 9, 10] 62 myNewListFilter = filter(lambda x: x % 2 == 1, myListFilter) 63 print('myNewListFilter:', list(myNewListFilter)) 64 65 list_x = [1, 1, 0, 0] 66 filter_list = filter(lambda x: True if x == 1 else False, list_x) 67 print(list(filter_list))
身体和灵魂必须有一个在路上!