zoukankan      html  css  js  c++  java
  • python lambda表达式

    lambda只是一个表达式,函数体比def简单很多,很多时候定义def,然后写一个函数太麻烦,这时候就可以用lambda定义一个匿名函数。

    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

    1 list(filter(lambda x:True if x % 3 == 0 else False, range(100)))

    如上所示,使用lambda表达式定义了一个匿名函数,用于筛选100以内的3的倍数,并生成一个列表。

     def make_repeat(n):
        return lambda s : s * n

    当然lambda也可以嵌套在一个函数内使用,如上,函数中嵌套了一个lambda表达式。

    double = make_repeat(2)
    double
    <function make_repeat.<locals>.<lambda> at 0x0000000003A01D90>

    然后,要使用的时候可以用一个变量来接收,显示double变量,double变量是一个函数,并且需要一个参数,参见lambda表达式,需要一个s参数。

    print(double(8))
    16

    最后,调用double变量,并且传入参数 8 ,得到返回值16。因为前面传入的n的值为 2 ,故 2 * 8 得到16。

    内置BIF介绍:

    filter():简单的理解为过滤器,需要两个参数,function,和一个序列(字符串、列表、元组都是序列),过滤器会依次将序列的值传入function中,

        如果返回True的话,将其重新生成一个列表返回。

    1  list(filter(lambda x:True if x % 3 == 0 else False, range(100)))
    2 [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

    zip():字面意思理解,就是zip打包,可以将多个序列进行打包,它会将序列拆分,然后把第一个序列和第二个序列的元素依次组成元组,2个一组组合成列表。

        不过要注意的是,这是以最短序列来组合的,就是说如果一个序列比较长,一个比较短的话,组合只会进行到断序列的最后一个元素,多余的部分会被抛弃。

    1 >>> str1 = "abcde"
    2 >>> str2 = "abcdefg"
    3 >>> list(zip(str1, str2))
    4 [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e')]

    map():映射,用法和filter()类似,也是将序列放入函数进行运算,但是,不论运算结果为什么,map()都将忠实反馈,这是map()和filter()的主要区别。请注意,filter()和map()中的function都必要有一个返回值。

    1 >>> list(map(lambda x:True if x % 3 == 0 else False, range(100)))
    2 [True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True, False, False, True]

     

  • 相关阅读:
    [Cocoa]iOS中的url编码问题
    [Cocoa]深入浅出Cocoa之消息
    [Cocoa]深入浅出iOS之生命周期
    [Cocoa]深入浅出Cocoa之Bonjour网络编程
    一分钟煮鸡蛋好吃又有营养 生活至上,美容至尚!
    教你几个清肠绝招,做个娇嫩无毒美人 生活至上,美容至尚!
    每天一杯简单排除肠道毒素 生活至上,美容至尚!
    防止电脑辐射必看 保护好你的肌肤 生活至上,美容至尚!
    美容去皱法的误区 生活至上,美容至尚!
    10分钟日本瘦腿操 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/jydeng/p/4145188.html
Copyright © 2011-2022 走看看