• Python3-lamba表达式、zip函数


    lambda表达式

    学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

    # 普通条件语句
    if 1 == 1:
        name = 'name1'
    else:
        name = 'name2'
      
    # 三元运算
    name = 'name1' if 1 == 1 else 'name2'

    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

    # 定义函数(普通方式)
    def func(arg):
        return arg + 1
      
    # 执行函数
    result = func(123)
      
    # ###################### lambda ######################
      
    # 定义函数(lambda表达式)
    my_lambda = lambda arg : arg + 1
      
    # 执行函数
    result = my_lambda(123)

    lambda存在意义就是对简单函数的简洁表示

    # cal2 = lambda n : n*n
    # ret = cal2(20)
    # print(ret)
    
    # def add(x, y): return x+y
    # add2 = lambda x,y : x+y
    # ret = add(2, 3)
    # print(ret)

     上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

    l=[3,2,100,999,213,1111,31121,333]
    print(max(l))
    
    Output:
    31121
    
    dic={'k1':10,'k2':100,'k3':30}
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    
    Output:
    k3
    100
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    输出
    1
    25
    49
    16
    64
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
    输出
    11
    15

    面试题练一练

    现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

    t1 = (('a'),('b'))
    t2 = (('c'),('d'))
    
    res = lambda t1,t2 : [{i,j}for i, j in zip(t1, t2)]
    print(res(t1, t2))

    知识补给:python3 zip函数

    zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(可以用list转换)。

    如果各个迭代器的元素不一致则返回列表长度与最短对象相同,利用*号操作符,可以将元组解压为列表。

    语法:zip([iterable,...])   --- 一个或多个迭代器, 返回元组列表

    >>>a = [1,2,3]
    >>> b = [4,5,6]
    >>> c = [4,5,6,7,8]
    >>> zipped = zip(a,b)     # 返回一个对象
    >>> zipped
    <zip object at 0x103abc288>
    >>> list(zipped)  # list() 转换为列表
    [(1, 4), (2, 5), (3, 6)]
    >>> list(zip(a,c))              # 元素个数与最短的列表一致
    [(1, 4), (2, 5), (3, 6)]
     
    >>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
    >>> list(a1)
    [1, 2, 3]
    >>> list(a2)
    [4, 5, 6]
  • 相关阅读:
    SpringBoot集成JWT
    MongoDB学习入门
    Docker入门笔记
    商品分类(递归子目录)接口开发笔记
    深入理解java虚拟机
    -XX:+HeapDumpOnOutOfMemoryError
    使用kettle报Invalid byte 1 of 1-byte UTF-8 sequence异常
    kettle学习笔记(四)——kettle输入步骤
    eclipse maven项目,如何导出使用的依赖jar包
    kettle学习笔记(二)——kettle基本使用
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/10162377.html
Copyright © 2020-2023  润新知