• 匿名函数、高阶函数


    匿名函数

    匿名函数:lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。如果一个函数的函数体仅有1行表达式,则该函数就可以用lambda表达式来代替。
    语法:name=lambda [list] : 表达式
    def add(x, y):
    return x + y
    ret = add(1, 3)
    print(ret)
    # 匿名函数调用方式1
    # bar = lambda x,y:x+y
    # print(bar(2,5))
    # 匿名函数调用方式2
    print((lambda x,y:x+y)(4,5))
    lambda表达式优势:
    *对于单行函数,使用lambda表达式可以省去定义函数的过程,让代码更加简洁
    *对于不需要多次复用的函数,使用lambda表达式可以在用完之后立即释放,提高程序执行得性能。

    高阶函数

    一个高阶函数应该具备下面至少一个特点:
    *将一个或者多个函数作为形参
    *返回一个函数作为其结果

    1、filter函数

    filter函数是一个对于可迭代对象的过滤器,过滤掉不符合条件的元素,返回的是一个迭代器,如果要转为列表,可以使用list()来转换。该函数接收两个参数,第一个为函数的引用或者None,第二个为可迭代对象,可迭代对象中的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到迭代器中。
    例题: 返回列表中的偶数
    def func(x):
    # if x%2==0:
    # return True
    # else:
    # return False
    return x%2==0
    res=filter(func,[15,12,6,3])
    print(res,type(res))
    # <filter object at 0x000002A272485B50> <class 'filter'>
    print(list(res)) # [12,6]
    结合匿名函数
    res=filter((lambda x:x%2==0),[15,12,6,3])
    print(list(res)) # [12,6]

    2、map函数

    接收一个函数和一个可迭代对象,map将函数依次作用在可迭代对象里的每个元素上,返回结果再封装成一个迭代器
    例1:
    def func(x):
    return 1
    res=map(func,[1,5,6,8])
    print(res,type(res))
    # <map object at 0x0000020A025D5B50> <class 'map'>
    print(list(res)) # [1, 1, 1, 1]

    例2:
    def func(x):
    return x*x
    res=map(func,[1,5,6,8])
    print(list(res)) # [1, 25, 36, 64]
    结合匿名函数:
    res=map(lambda x:x*x,[1,5,6,8])
    print(list(res)) # [1, 25, 36, 64]

    reduce函数
    在python3中如果使用reduce需要先导入
    from functools import reduce
    reduce是依次根据传入的可迭代对象的每个元素,然后把每一次的结果跟下一个元素进行计算,是一个累积起来的过程。
    from functools import reduce
    def func(x,y):
    return x+y
    res=reduce(func,[1,2,3,4,5])
    print(res,type(res)) # 15 <class 'int'>

    res=reduce((lambda x,y:x+y),[1,2,3,4,5])
    print(res) # 15

    zip函数
    接收0个、1个、多个可迭代对象为参数,将其合并成一个元组,返回一个可迭代的zip对象,可以使用list将返回的对象转换成列表,列表的长度是所有传入的可迭代对象中可迭代最短的个数
    l1 = [1,2,3]
    l2 = [4,5,6]
    res=zip(l1,l2)
    print(res,type(res))
    # <zip object at 0x00000242F60F0A00> <class 'zip'>
    print(list(res)) # [(1, 4), (2, 5), (3, 6)]
    print(dict(list(zip(l1,l2)))) # {1: 4, 2: 5, 3: 6}

    l1 = [1,2,3]
    l2 = [4,5,]
    print(list(zip(l1,l2))) # [(1,4),(2,5)]

    额外无关知识点
    print(any([True,False,False])) # True any相当于或
    print(all([False,True,True])) # False all相当于且
    sorted排序函数:
    l=[1,2,3,4]
    print(sorted(l,reverse=True)) # [4, 3, 2, 1]

  • 相关阅读:
    树的直径教学思路
    dfs序3树上差分
    DFS序与欧拉序的区别
    DFS序2
    树的重心教学思路
    loadrunner11并发注册码
    JPA 添加 converter
    银行信贷账户管理任务
    《如何启动黄金圈思维》笔记
    《野蛮进化》笔记
  • 原文地址:https://www.cnblogs.com/python-htl/p/15251533.html
Copyright © 2020-2023  润新知