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])
  • 相关阅读:
    Sublime Text 3 免费注册方法(福利)
    点击查看大图滑动预览(h5,pc通用)
    react中简单倒计时跳转
    mui.ajax中文乱码
    pycharm的一些快捷键
    Flex
    justify-content
    mysql分组,行转列
    前端资源教程
    mui初级入门教程(七)— 基于native.js的文件系统管理功能实现
  • 原文地址:https://www.cnblogs.com/xingye-mdd/p/8977642.html
Copyright © 2011-2022 走看看