zoukankan      html  css  js  c++  java
  • 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]]
  • 相关阅读:
    LeetCode 647. Palindromic Substrings
    jquery--find与children方法的区别
    JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
    javascript之原型prototype
    js的数据格式之json
    Javascript:必须知道的Javascript知识点之“单线程事件驱动”
    javascript自我测试题
    javascript:delete 删除对象的属性
    javascript:function 函数声明和函数表达式 详解
    [转]JavaScript可否多线程? 深入理解JavaScript定时机制
  • 原文地址:https://www.cnblogs.com/peiya/p/13227185.html
Copyright © 2011-2022 走看看