美文网首页
python基础9-lambda用法

python基础9-lambda用法

作者: 牧_青 | 来源:发表于2023-12-19 22:32 被阅读0次

    1、基本用法

    lambda函数可以接收任意多个参数(包括可选参数)并返回单个表达式的值

    又称匿名函数,指的是一类无需定义标识符(函数名)的函数或子程序

    # lambda {args1}, {args2}, ..., {args3}: expression
    # args:函数要接受的参数
    # expression: 函数主体表达式,只能有一个
    # lambda返回值是一个函数的地址,也就是函数对象
    lambda_add_ten = lambda x: x + 10
    print(lambda_add_ten(5))
    
    def add_ten(x):
      return x + 10
        
    print(add_ten(5))
    
    # 两种方法结果相同,但lambda函数可以使代码更短更清晰
    

    2、与其它函数一起使用

    # 打印奇数
    numbers = [i for i in range(10)]
    
    # 方式1
    odd_number = []
    for n in numbers:
      if n % 2 == 1:
        odd_number.append(n)
        
    # 方式2
    odd_numbers = [i for i in numbers if i % 2 == 1]
    
    # 方式3
    print(list(filter(lambda x: x%2 == 1, numbers)))
    
    # filter()函数的用法
    """
    filter(
        function,  # The function to filter items with 判断函数
        iterable,  # The iterable to filter 可迭代的对象
    )
    返回一个迭代器对象 Iterator
    filter()接受一个函数和序列,把传入的函数一次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
    filter()函数返回的是一个Iterator,也就是惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list
    """
    
    values = [i for i in range(10)]
    def greater_than_five(x):
      return x>5
    
    filtered = filter(greater_than_five, values)
    filtered_values = list(filtered)
    print(filtered_values)
    

    3、使用key参数使用

        使用`sorted()`或者`sort()`方法对python中的迭代进行排序时,关键参数决定如何比较迭代中的两个元素
    
    leaders = ['jerry', 'tom', 'jerry zhang', 'edward li']
    leaders.sort(key=lambda x: len(x))
    print(leaders)
    
    leaders = {4: 'edward li', 2: 'tom', 3: 'jerry zhang', 1: 'jerry'}
    leaders = dict(sorted(leaders.items(), key=lambda x: x[0]))
    print(leaders)
    

    4、直接调用

    (lambda x, y: x*y)(2, 3)   # 出于可读性和可维护性考虑,最好只在python的交互式解释器中使用这个技巧
    
    # 如果熟悉python中的下划线技巧,也可使用以下方式
    # <function <lambda> at 0x7fc319102d30>
    _(2, 3)
    

    5、闭包中使用

    def outer_func():
      person = 'jerry'
      def print_person(location = ''):
        return person + 'in the ' + location
      
      return print_person
    
    leader = outer_func()('china')
    print(leader)
    

    使用lambda优化上述代码

    def outer_func():
      person = 'jerry'
      return lambda location='': person + 'in the ' + location
    
    leader = outer_func()('china')
    print(leader)
    

    相关文章

      网友评论

          本文标题:python基础9-lambda用法

          本文链接:https://www.haomeiwen.com/subject/gjktndtx.html