zoukankan      html  css  js  c++  java
  • Python笔记4(匿名函数)

    1、匿名函数介绍

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

    函数名 = lambda 参数 :返回值
    参数可以有多个,用逗号隔开
    匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    返回值和正常的函数一样可以是任意数据类型

    2、lambda表达式

     1 # lambda表达式
     2 def add(a,b):
     3     return a+b
     4 
     5 add = lambda a,b : a+b
     6 print(add(1,2))
     7 
     8 #1、返回1~10的平方
     9 [i**2 for i in range(10)]
    10 def func(num):
    11     return num ** 2
    12 
    13 for i in map(func,range(10)):print(i)
    14 
    15 #使用lambda表达式
    16 for i in map(lambda num : num ** 2 ,range(10)):print(i)
    17 
    18 #2、计算元素的最小值
    19 def func(num):
    20     return num%2
    21 print(min(-2,3,-4,key=func))
    22 #使用lambda表达式
    23 print(min(-2,3,-4,key=lambda num:num%2))
    24 
    25 # 3、代码的输出是什么
    26 d = lambda p:p*2
    27 t = lambda p:p*3
    28 x = 2
    29 x = d(x)   # x = 4
    30 x = t(x)   # x = 12
    31 x = d(x)
    32 print(x)
    33 #>>>24
    34 
    35 # 4、现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    36 def func(t):
    37     return {t[0]:t[1]}
    38 
    39 ret = map(func,zip((('a'),('b')),(('c'),('d'))))
    40 print(list(ret))
    41 #使用lambda表达式
    42 ret = map(lambda t:{t[0]:t[1]},zip((('a'),('b')),(('c'),('d'))))
    43 print(list(ret))
    44 
    45 # 5、以下代码的输出是什么?请给出答案并解释。
    46 def multipliers():
    47     return [lambda x:i*x for i in range(4)]
    48 print([m(2) for m in multipliers()])
    49 #>>>[6, 6, 6, 6]
    50 
    51 #分析
    52 # def multipliers():
    53 #     lst = []
    54 #     i = 0
    55 #     lst.append(lambda x:i*x)
    56 #     i = 1
    57 #     lst.append(lambda x:i*x)
    58 #     i = 2
    59 #     lst.append(lambda x:i*x)
    60 #     i = 3
    61 #     lst.append(lambda x:i*x)
    62 #     # lst = [lambda x:3*2,lambda x:i*x,lambda x:i*x,lambda x:i*x]
    63 #     return lst
    64 # print([m(2) for m in multipliers()])
    65 
    66 # 6、请修改multipliers的定义来产生期望的结果
    67 # def multipliers():
    68 #     return [lambda x:i*x for i in range(4)]
    69 g = (lambda x:i*x for i in range(4))#列表推导式修改成生成器表达式
    70 print([m(2) for m in g])
  • 相关阅读:
    JavaScript中的闭包
    SQL 备忘
    SqlServer 2005 升级至SP2过程中出现"身份验证"无法通过的问题
    unable to start debugging on the web server iis does not list an application that matches the launched url
    Freebsd 编译内核
    Freebsd 6.2中关于无线网络的设定
    【Oracle】ORA01219
    【Linux】Windows到Linux的文件复制
    【Web】jar命令行生成jar包
    【Linux】CIFS挂载Windows共享
  • 原文地址:https://www.cnblogs.com/xingye-mdd/p/8977642.html
Copyright © 2011-2022 走看看