zoukankan      html  css  js  c++  java
  • Python Lambda 的简单用法

    下面代码简单举例介绍以下 lambda的用法。

    from functools import reduce
    
    #1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
    #2 python lambda它只是一个表达式,而def则是一个语句。
    #匿名函数lambda
    num = lambda x,y : x+y
    
    print("lambda")
    print(num(3,4))
    
    #上面的代码可以使用 def 定义函数实现
    
    def add(x,y):
        return x+y
    print("def")
    print(add(3,4))
    
    '''
    由上例可以看出
    lambda的一般形式是关键字lambda后面跟一个或多个参数,
    紧跟一个冒号,以后是一个表达式。
    lambda是一个表达式而不是一个语句。
    它能够出现在Python语法不允许def出现的地方。作为表达式,
    lambda返回一个值(即一个新的函数)。
    lambda用来编写简单的函数,而def用来处理更强大的任务。
    
    '''
    
    #lambda 使用举例
    #python2 的用法
    '''
    #python2  是如下写法,但是python 3中修改了写法。见如下写法
    foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
    
    #
    print(filter(lambda x: x % 3 == 0, foo))
     #--[18, 9, 24, 12, 27]
    map_list = list()
    print(map(lambda x: x * 2 + 10, foo))
    #--[14, 46, 28, 54, 44, 58, 26, 34, 64]
    print(reduce(lambda x, y: x + y, foo))
    '''
    
    
    
    
    
    #python 3 的用法
    #Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce  
    
    foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
    num_list = list(filter(lambda x: x % 3 == 0, foo))
    print(num_list)
     #--[18, 9, 24, 12, 27]
    map_list = list(map(lambda x: x * 2 + 10, foo))
    print(map_list)
    #--[14, 46, 28, 54, 44, 58, 26, 34, 64]
    
    '''
    reduce函数:
    在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引
    入:
    '''
    print(reduce(lambda x, y: x + y, foo))
    
    
    
    # 下面的代码主要是为了 体现lambda 的其他用法,可以传递参数。而不使用的时候 不能传递参数
    
    # Button(top, text="计算", command=lambda: on_click(top, base_text)).pack()
    # top.mainloop()
    
    # 这种 直接command = 方法名的方式,函数是不能传递参数的,所以为了能传递参数使用了上面的方法。
    # Button(top, text="计算", command= on_click).pack()
  • 相关阅读:
    基于log4net的帮助类Log
    log4Net不能成功生成日志问题(关于配置错误)
    js 时间构造函数
    启动调试IIS时,vs无法在 Web 服务器上启动调试。Web 服务器未能找到请求的资源。 有关详细信息,请单击“帮助”。
    XmlException: 名称不能以“<”字符(十六进制值 0x3C)开头
    poj 3040 Allowance
    1144 数星星 (树状数组)
    18121 排排坐看电影
    18124 N皇后问题
    18025 小明的密码
  • 原文地址:https://www.cnblogs.com/Skyyj/p/6697620.html
Copyright © 2011-2022 走看看