• 匿名函数


    #匿名函数就是不再使用def语句这样的标准形式定义一个函数。
    #Python使用lambda创建匿名函数。
    #lambda只是一个表达式,函数体比def简单很多。
    #lambda的主体是一个表达式,而不是一个代码块,仅能在lambda表达式中封装有限的逻辑。
    lambda函数拥有自己的命名空间,不能访问自有参数列表之外或全局命名空间的参数。
    #lambda函数的语法只包含一个语句:
    1 lambda [arg1[1,arg2,....argn]]:expression
    #匿名函数应该如何应用呢?
    #先看一个求两个数的和的示例。
    #使用def语句:
    1 #! /usr/bin/python3
    2 #-*-conding:UTF-8 -*-
    3 #匿名函数
    4 
    5 def func(x,y):
    6     return x+y
    #使用lambda表达式:
    1 #! /usr/bin/python3
    2 #-*-conding:UTF-8 -*-
    3 #匿名函数
    4  
    5 lambda x,y:x+y
    #由上面的代码可以看到,使用lambda表达编写的代码比使用def语句少。这里不太明显,再看一个代码更多的示例:
    #比如求一个列表中大于3的元素。
    #通过过程式编程实现,也是常规的方法。
    1 >>> L1=[1,2,3,4,5]
    2 >>> L2=[]
    3 >>> for i in L1:
    4     if i>3:
    5         L2.append(i)
    6 
    7         
    8 >>> print('列表中大于3的元素有:',L2)
    9 列表中大于3的元素有: [4, 5]
    #通过函数式编程实现,运用filter,给出一个判断条件:
    1 #! /usr/bin/python3
    2 #-*-conding:UTF-8 -*-
    3 #匿名函数
    4 
    5 def func(x):
    6     return x>3
    7 f_list=filter(func,[1,2,3,4,5])
    8 print('列表中大于3的元素有:',[item for item in f_list])
    #执行结果如下:
    1 ==================== RESTART: C:/Users/L/Desktop/匿名函数.py ====================
    2 列表中大于3的元素有: [4, 5]
    #如果运用匿名函数,就会更加精简,一行代码即可:
    1 print('列表中大于3的元素有:',[item for item in filter(lambda x:x>3,[1,2,3,4,5])])
    #执行结果如下:
    1 ==================== RESTART: C:/Users/L/Desktop/匿名函数.py ====================
    2 列表中大于3的元素有: [4, 5]
    #从上面的操作可以看出,lambda一般应用于函数式编程,代码简洁,常和filter等函数结合使用。
    #我们对上面使用lambda的示例进行解析。
    #在表达式中:
    #x为lambda函数的一个参数。
    #:为分割符。
    #x>3则是返回值,在lambda函数中不能有return,其实冒号(:)后面就是返回值。
    #item for item in filter是Python3中filter函数的取值方式,因为从Python3起,filter函数返回的对象从列表改为迭代器(filter object)。filter object支持迭代操作,比如for循环:
    1 for item in a_filter_object:
    2        print(item)
    #如果还是需要一个列表,就可以这样得到它:
    1 filter_list=[item for item in a_filter_objetc]
    #由这些示例可以看到,匿名函数确实有他的优点。
    #那么在什么情况下使用匿名函数呢?
    #一般以下情况多考虑使用匿名函数:
    (1)、程序一次性使用、不需要定义函数名时,用匿名函数可以节省内存中变量定义空间。
    (2)、如果想让程序更加简洁,使用匿名函数就可以做到。
    #当然,匿名函数函数有3个规则需要记住:
    (1)、一般有一行表达式,必须有返回值。
    (2)、不能有return。
    (3)、可以没有参数,也可以有一个或多个参数。
    #下面示例几个匿名函数:
    (1)、无参数匿名函数:
    1 >>> t=lambda:True #分号前无任何参数
    2 >>> t()
    3 True
    (2)、带参数函数:
    1 >>> lambda x:x**3  #带一个参数
    2 <function <lambda> at 0x035C5BB8>
    3 >>> lambda x,y,z:x+y+z #带多个参数
    4 <function <lambda> at 0x035C5C00>
    5 >>> lambda x,y=3:x*y #允许参数存在默认值
    6 <function <lambda> at 0x035C5BB8>
    (3)、匿名函数调用:
    1 >>> c=lambda x,y,z:x*y*z
    2 >>> c(2,3,4)
    3 24
    4 >>> c=lambda x,y=2:x+y #使用了默认值
    5 >>> c(10) #如果不输入,就使用默认值2
    6 12
  • 相关阅读:
    2017.2.12【初中部 GDKOI】模拟赛B组 T2:宿敌
    离散化介绍
    2017.2.12【初中部 GDKOI】模拟赛B组 T1:圆盘染色
    2017.2.12【初中部 GDKOI】模拟赛B组
    2017.2.11【初中部 GDKOI】模拟赛B组 T4:摧毁巴士站
    2017.2.11【初中部 GDKOI】模拟赛B组
    2017.2.11【初中部 GDKOI】模拟赛B组 T3:空间航行
    2017.2.11【初中部 GDKOI】模拟赛B组 T2:软件公司
    2017.2.11【初中部GDKOI】模拟赛B组 T1:最小比例
    自出题,写题解《招募士兵》
  • 原文地址:https://www.cnblogs.com/DLHe/p/7802542.html
Copyright © 2020-2023  润新知