• python-匿名函数


    匿名函数 藏匿名字的函数

    用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
    lambda函数的语法只包含一个语句,如下:
    lambda [arg1 [,arg2,.....argn]]:expression

    Lambda函数能接收任何数量的参数但只能返回一个表达式的值
    匿名函数不能直接调用print,因为lambda需要一个表达式

    # 对函数的简写
    
    # 无参数无返回值的函数
    def my_print():
        print("hello python")
    my_print()
    # 表达式的定义
    f = lambda : print("hello python")
    f()
    # 等价于
    (lambda : print("hello python"))()
    
    # 无参数有返回值的函数
    def my_pi():
        return 3.14
    print(my_pi())
    # 表达式的定义
    f = lambda : 3.14
    print(f())
    
    # 定义一个有参数无返回值的函数
    def my_print(name):
        print("你好%s" % name)
    my_print("龟叔")
    f = lambda name: print("你好%s" % name)
    f("龟叔")
    
    # 定义一个有参数有返回值的函数
    def add2num(a, b):
        return a + b
    f = lambda a, b : a + b
    print(f(10, 20))

    函数作为参数传递
    f = lambda x,y:x+y

    # 函数
    def fun(a, b, opt):
        # print("a = %d" % a)
        # print("b = %d" % b)
        result = opt(a, b)
        print("result = %d" % result)
    # 调用函数
    fun(1, 2, lambda x,y:x+y)
    f = lambda x, y : x +y
    def fun(a, b, opt):
        result = opt(a, b)
        print("结果:%d" % result)
    fun(10, 10, f)

    配合sort排序使用

    # 自定义排序(最外层肯定是列表)
    stus = [{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}, {"name": "wangwu", "age": 17}]
    # 按照年龄排序
    stus.sort(key=lambda my_dict:my_dict["age"])
    print(stus)  # [{'name': 'wangwu', 'age': 17}, {'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 19}]
    # 按照名字排序
    # 使用的是每个名字的首字母排序 (规则是按照ascii码完成的)
    # 格式: 列表名.sort(key=lambda 列表的元素(临时变量): 临时变量[key])
    stus.sort(key=lambda my_dict:my_dict["name"])
    print(stus)  # [{'name': 'lisi', 'age': 19}, {'name': 'wangwu', 'age': 17}, {'name': 'zhangsan', 'age': 18}]
    # 列表中的列表嵌套
    my_list = [[10, 8, 9], [7, 10, 19], [9, 10, 29]]
    # 按照列表元素(小列表)最后一个元素排序
    # 格式: 列表名.sort(key=lambda 列表的元素(临时变量): 临时变量[下标索引])
    my_list.sort(key=lambda new_list:new_list[2], reverse=True)
    print(my_list)  # [[9, 10, 29], [7, 10, 19], [10, 8, 9]]
  • 相关阅读:
    springboot/springcloud 启动速度慢 卡死问题
    数据分析路线
    java杂
    贪吃蛇
    设计模式的七大原则
    Java--GUI编程(三)总结AWT/Swing
    时间复杂度
    Java--GUI编程(二)简易加法计算器
    Java--GUI编程(一)
    Java--this与super区别
  • 原文地址:https://www.cnblogs.com/peiya/p/13227185.html
Copyright © 2020-2023  润新知