Python笔记:lambda表达式

Lambda 表达式

  • 使用 Lambda 表达式创建匿名函数,即没有名称的函数。lambda 表达式非常适合快速创建在代码中以后不会用到的函数。

    麻烦的写法:

      def multiply(x, y):
        return x * y
    

    使用Lambda之后:

      double = lambda x, y: x * y
    
  • Lambda 函数的组成部分:

    • 关键字 lambda 表示这是一个 lambda 表达式。
    • lambda 之后是该匿名函数的一个或多个参数(用英文逗号分隔),然后是一个英文冒号 :。和函数相似,lambda 表达式中的参数名称是随意的。
    • 最后一部分是被评估并在该函数中返回的表达式,和你可能会在函数中看到的 return 语句很像。
    • 备注:鉴于这种结构,lambda 表达式不太适合复杂的函数,但是非常适合简短的函数。

Lambda 表达式[相关练习]

  • map() 是一个高阶内置函数,接受函数和可迭代对象作为输入,并返回一个将该函数应用到可迭代对象的每个元素的迭代器。下面的代码使用 map() 计算 numbers 中每个列表的均值,并创建列表 averages, 通过将 mean 函数替换为在 map() 的调用中定义的 lambda 表达式,重写这段代码,使代码更简练。

      numbers = [
                    [34, 63, 88, 71, 29],
                    [90, 78, 51, 27, 45],
                    [63, 37, 85, 46, 22],
                    [51, 22, 34, 11, 18]
                ]
    
      def mean(num_list):
          return sum(num_list) / len(num_list)
    
      averages = list(map(mean, numbers))
      print(averages)
    

    使用lambda重写后:

      numbers = [
                    [34, 63, 88, 71, 29],
                    [90, 78, 51, 27, 45],
                    [63, 37, 85, 46, 22],
                    [51, 22, 34, 11, 18]
                ]
    
      averages = list(map(lambda x: sum(x) / len(x), numbers))
      print(averages) # [57.0, 58.2, 50.6, 27.2]
    
  • filter() 是一个高阶内置函数,接受函数和可迭代对象作为输入,并返回一个由可迭代对象中的特定元素(该函数针对该元素会返回 True)组成的迭代器。下面的代码使用 filter() 从 cities 中获取长度少于 10 个字符的名称以创建列表 short_cities。通过将 is_short 函数替换为在 filter() 的调用中定义的 lambda 表达式,重写这段代码,使代码更简练。

      cities = ["New York City", "Los Angeles", "Chicago", "Mountain View", "Denver", "Boston"]
    
      def is_short(name):
          return len(name) < 10
    
      short_cities = list(filter(is_short, cities))
      print(short_cities)
    

    使用lambda重写后:

      cities = ["New York City", "Los Angeles", "Chicago", "Mountain View", "Denver", "Boston"]
    
      short_cities = list(filter(lambda n: len(n) < 10, cities))
      print(short_cities) # ['Chicago', 'Denver', 'Boston']
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值