zoukankan      html  css  js  c++  java
  • python第l六天,lambda表达式学习,涉及filter及Map。

      在python中lambda表达式可以作为匿名函数来使用,举一个简单的栗子:

      以前我们写两个数相加的函数需要 

    #以前我们写两个数相加的函数,需要这样写
    >>> def sum(x,y):
        return x+y
    
    >>> sum(1,2)
    3
    >>> 
    
    #而学了lambda之后我们再写这个函数可以这么写
    >>> x=lambda x,y:x+y
    >>> x(1,2)
    3
    >>> 

      python对我们以后的编程的意义,使用Python写一些脚本的时候,使用匿名函数就可以省下定义函数的过程,比如我们只写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数,然后再写一个调用,使用匿名函数就可以使代码变得更加精简。

      对于一些比较抽象的并且整个程序执行下来只需要调用一两次,有时候给函数起名称也是很头疼的事情,使用匿名函数就不需要再考虑这个问题。

      简化代码的可读性,普通函数经常会跳到开头的def定义部分,使用匿名函数可以省去这个步骤。

      再练习几个玩玩

    '''
    def fun_A(x,y=3)
        return x*y
    把这个方法用lambda表达式写
    '''
    fun_A = lambda x,y=3:x*y
    
    print(fun_A(2))
    print(fun_A(2,6))
    '''
    lambda x:x if x%2 else None
    变为函数
    '''
    def odd(x):
        if x%2:
            return x
        else:
            return None
    
    print(odd(9))

      filter,过滤器,可以帮我们过滤掉一些我们不想要的东西

    '''
    利用filter和lambda表达式快速求出100以内的3的倍数
    '''
        
    fun_B = filter(lambda x:not(x%3),range(0,100))
    print(list(fun_B))
    '''
    使用zip可以将两个数组以元组方式绑定到一起
    list(zip([1,2,3,4,5],[6,7,8,9,10]))
    [(1,6),(2,7),(3,8),(4,9),(5,10)]
    '''
    print(list(map(lambda x,y:[x,y],(1,2,3,4,5),(6,7,8,9,10))))
    def make_repeat(n):
        return lambda x:x*n
    #闭包函数,下面这种调用相当于给n赋值了 2
    double = make_repeat(2)
    
    #调用闭包,并且给闭包中的x赋值8
    
    print(double(8))
    
    print(double('i love you '))

    结果为:

    6
    12
    ------------------------------
    9
    ------------------------------
    [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]
    ------------------------------
    [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
    ----------------
    16
    i love you i love you 
    >>> 
  • 相关阅读:
    php环境配置中各个模块在网站建设中的功能
    PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
    August 17th 2017 Week 33rd Thursday
    August 16th 2017 Week 33rd Wednesday
    August 15th 2017 Week 33rd Tuesday
    August 14th 2017 Week 33rd Monday
    August 13th 2017 Week 33rd Sunday
    August 12th 2017 Week 32nd Saturday
    August 11th 2017 Week 32nd Friday
    August 10th 2017 Week 32nd Thursday
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8635320.html
Copyright © 2011-2022 走看看