• lambda函数,内置map()函数及filter()函数


    8.1 lambda函数

    作用及意义:
     1.没必要专门定义函数,给函数起名,起到精简的效果
     2.简化代码的可读性
    def ds(x):
        return 2 * x + 1
    
    ds(5)
    ---11
    
    g = lambda x : 2 * x + 1                                      
    g(5)
    ---11
    
    def add(x,y):
        return x + y
    
    add(3,4)
    ---7
    
    g = lambda x,y : x + y
    g(3,4)
    ---7

     常用的内置函数(BIF函数)

    ①  filter()     ------过滤器
    list (filter(None,[1,0,False,True]))
    ---[1, True]             #把任何非True的内容给过滤掉了
    
    
    #利用filter写一个奇数的过滤器
    def odd(x):
        return x % 2
    temp = range(10)
    show = filter(odd,temp)
    list(show)
    ---[1,3,5,7,9]
    
      
    list (filter(lambda x : x % 2 , range(10)))
    ---[1,3,5,7,9]
    
    
    def aaa(x):
        return x % 2 == 1
    ret = list(filter(aaa, [1, 2, 54, 3, 6, 8, 17, 9]))
    print(ret)
    ---[1, 3, 17, 9]
    l = [15, 24, 31, 14]
    def func(x):
        return x > 20
    print(list(filter(func,l)))
    
    print(list(filter(lambda x: x > 20, l)))      # 比较两者差异

    map()   -----映射

    map有两个参数,一个函数,一个可迭代序列,将序列中的每一个元素作为函数参数进行运算加工
    直到可迭代序列中的每个元素加工完毕返回所有加工后的元素构成的新序列。
    list(map(lambda x : x * 2, range(10)))
    ---[0, 2, 4, 6, 8, 10, 12, 14, 16, 18
    l = [1, 2, 3, 4, 5]
    
    def pow2(x):
        return x*x
    
    print(list(map(pow2, l)))
    ---[1, 4, 9, 16, 25]
    l = [1, 2, 3, 4]
    
    def func(x):
        return x*x
    print(list(map(func, l)))
    
    print(list(map(lambda x : x*x, l)))     # 比较两者差异
    # 多个数组进行相加
    li = [11, 22, 33] sl = [1, 2, 3] new_list = map(lambda a, b: a + b, li, sl) print(new_list)
    ---[12, 24, 36] # 这里在py2中结果是这个,在py3中是一个可迭代对象,需要调用list函数

     ③ reduce()函数

      也是存在两个参数,一个函数,一个可迭代序列,但是函数必须接收两个参数。作用是对于序列内所有元素进行累积操作

    from functools import reduce    # 在py2中不需要从functools中导入,但是在py3中需要,他已经不属于一个内置函数,属于一个高阶函数
    lst = [11,22,33]
    func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)
    print('func2:', func2)
    
    ---func2: 66

    例题:

    # 现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    
    # 方法一
    t1 = (('a'), ('b'))
    t2 = (('c'), ('d'))
    print(list(zip(t1, t2)))                           # [('a', 'c'), ('b', 'd')]
    print(list(map(lambda t: {t[0], t[1]}, zip(t1, t2))))             # [{'a', 'c'}, {'d', 'b'}]
    
    # 方法二
    print(list([{i,j} for i,j in zip(t1,t2)]))                # [{'a', 'c'}, {'d', 'b'}]
    
    #方法三
    func = lambda t1,t2:[{i,j} for i,j in zip(t1,t2)]
    ret = func(t1,t2)
    print(ret)                                          # [{'a', 'c'}, {'d', 'b'}]
  • 相关阅读:
    linux环境下Redis主从复制和集群环境搭建
    2017年秋季学期软件工程第二次作业
    《人月神话》读后感
    功能需求描述
    初学Windows应用程序开发遇到的几个专业名词解释
    2017年秋季学期软件工程第一次作业(曹洪茹)
    第二次四则运算完善
    《人月神话》读后感
    软件工程课上随笔-规约
    2017软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/LearningOnline/p/8463914.html
Copyright © 2020-2023  润新知