Python学习笔记之lambda表达式用法详解

作者:Johnny丶me 时间:2022-01-28 15:39:37 

本文实例讲述了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']

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

来源:https://blog.csdn.net/Tyro_java/article/details/80726129

标签:Python,lambda表达式
0
投稿

猜你喜欢

  • javascript根据像素点取位置示例

    2023-09-03 22:58:54
  • GO 函数式选项模式(Functional Options Pattern)

    2024-05-22 10:16:05
  • HTML4标签的默认样式列表

    2007-09-28 22:00:00
  • Python利用treap实现双索引的方法

    2022-02-28 15:59:44
  • MySQL 查询速度慢的原因

    2024-01-25 01:10:27
  • Python写入CSV文件的方法

    2021-08-21 19:09:44
  • Go 语言结构实例分析

    2024-04-23 09:46:36
  • python的图形用户界面介绍

    2023-04-08 19:55:46
  • 带你了解MySQL中的事件调度器EVENT

    2024-01-18 05:55:16
  • Go到底能不能实现安全的双检锁(推荐)

    2024-04-26 17:36:49
  • 基于ORA-19815闪回空间爆满问题的处理方法

    2024-01-21 03:35:04
  • JS在IE和FireFox之间常用函数的区别小结

    2024-04-16 09:54:54
  • 在ASP.NET 2.0中操作数据之三十六:在DataList里编辑和删除数据概述

    2024-05-09 09:03:43
  • Python学习小技巧之列表项的推导式与过滤操作

    2021-08-18 14:46:30
  • python tarfile压缩包操作保姆级教程

    2022-03-29 21:38:30
  • R语言属性知识点总结及实例

    2022-06-28 04:39:02
  • 深度学习环境搭建anaconda+pycharm+pytorch的方法步骤

    2023-06-27 02:02:49
  • Python实现统计代码行的方法分析

    2023-10-15 13:08:44
  • SQL Server 2012 安装图解教程(附sql2012下载地址)

    2024-01-18 20:49:32
  • html注释所引起的一系列问题

    2008-11-04 13:23:00
  • asp之家 网络编程 m.aspxhome.com