• 十、lambda表达式、内置函数之filter、map、reduce


    lambda表达式
     
    学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:
    # 普通条件语句
    if 1 == 1:
    name = 'wupeiqi'
    else:
    name = 'alex'
    # 三元运算
    name = 'wupeiqi' if 1 == 1 else 'alex'
    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式
     
    # ###################### 普通函数 ######################
    # 定义函数(普通方式)
    def func1(arg):
      return arg + 1
     
    # 执行函数
    func1(123)
     
    # ###################### lambda ######################
     
    # 定义函数(lambda表达式)
    func2 = lambda arg : arg + 1
     
    # 执行函数
    func2(123)
     
    lambda存在意义就是对简单函数的简洁表示,也支持传递多个参数,也支持动态参数,如下:
    func3 = lambda a,b: a + b
    func3(11,12)
    ==============================================================================
     
    map方法:
    遍历序列,对序列中每个元素进行操作,最终获取新的序列,如:
     
    每个元素增加100
    li = [11,22,33]
    def func(arg):
      return arg +100
    new_list = map(func,li)
    print (new_list)
     
    更简便用lambda表达式来做:
    li = [11, 22, 33]
    new_list = map(lambda a: a + 100, li)
     
     
    两个列表对应元素相加
    li = [11, 22, 33]
    sl = [1, 2, 3]
    new_list = map(lambda a, b: a + b, li, sl)
    ================================================================================
    filter方法:
    对于序列中的元素进行筛选,最终获取符合条件的序列,如:
    获取列表中大于12的所有元素集合
    li = [11, 22, 33]
    new_list = filter(lambda arg: arg > 22, li)
    #filter第一个参数为空,将获取原来序列,filter内部默认只取值为true的值
    以取10以内的所有奇数为例:一行命令搞定
    list(filter(lambda x : x % 2,range(10)))
    [1,3,5,7,9]
    ===============================================================================
    reduce方法:
    from functools import reduce
    对于序列内所有元素进行累计操作,如:
    获取序列所有元素的和
    li = [11, 22, 33,44,55,66,77,88,99]
    result = reduce(lambda arg1, arg2: arg1 + arg2, li)
    # reduce的第一个参数,函数必须要有两个参数
    # reduce的第二个参数,要循环的序列
    # reduce的第三个参数,初始值
     
  • 相关阅读:
    MySQl数据约束练习
    MySQL查询实例
    网络通信协议简介(TCP与UDP)
    数据类型转换
    C++编译过的C代码为什么要用extern C
    hashtable
    以RB-tree为底层机制的几个关联式容器
    红黑树(RB-Tree)
    slist
    deque
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329366.html
Copyright © 2020-2023  润新知