zoukankan      html  css  js  c++  java
  • 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))
    
    
    
     
     
  • 相关阅读:
    Python 面向对象高级编程
    Python 继承和多态
    Python 访问限制
    学习笔记项目3-Django-管理网站
    学习笔记项目2-Django-创建数据库及应用
    学习笔记项目1-Django-创建虚拟环境和项目
    写一个 100 以内的奇数列表
    给一个字符串,转换成数字整数,若包含非法字符,返回提示,正确则反回整数值,不能使用内置函数转换
    Linux系统实现一个everything程序
    自动化测试常用脚本-等待某个元素是否显示
  • 原文地址:https://www.cnblogs.com/faithyiyo/p/9766187.html
Copyright © 2011-2022 走看看