首页 > 其他分享 >map 和 lambda 函数

map 和 lambda 函数

时间:2024-11-18 14:12:07浏览次数:1  
标签:map 函数 迭代 result print lambda

map 和 lambda 的用法及规则


1. map 函数

map 是 Python 内置函数,用于对可迭代对象中的每个元素应用一个函数,并返回一个 map 对象(可以转换为其他数据类型,如列表、元组等)。

语法

map(function, iterable, ...)
  • 参数
    • function:需要应用的函数。
    • iterable:一个或多个可迭代对象。
  • 返回值
    • 一个 map 对象,是惰性计算的结果(类似生成器)。

基本用法

  1. 单个可迭代对象
numbers = [1, 2, 3, 4]
result = map(lambda x: x**2, numbers)
print(list(result))
# 输出: [1, 4, 9, 16]
  1. 多个可迭代对象
    • 当提供多个可迭代对象时,function 的参数数量必须与可迭代对象的数量一致。
a = [1, 2, 3]
b = [4, 5, 6]
result = map(lambda x, y: x + y, a, b)
print(list(result))
# 输出: [5, 7, 9]

2. lambda 函数

lambda 是一种匿名函数,用于创建短小的函数表达式。lambda 函数的主体只能有一个表达式,结果会自动返回。

语法

lambda 参数1, 参数2, ...: 表达式
  • 参数:函数参数,可以是位置参数、关键字参数等。
  • 表达式:只有一个表达式,返回值是该表达式的结果。

基本用法

  1. 定义和调用
add = lambda x, y: x + y
print(add(3, 5))
# 输出: 8
  1. 与 map 一起使用
numbers = [1, 2, 3, 4]
result = map(lambda x: x**2, numbers)
print(list(result))
# 输出: [1, 4, 9, 16]
  1. 作为函数参数
def apply_func(func, value):
    return func(value)

result = apply_func(lambda x: x * 10, 5)
print(result)
# 输出: 50

3. 使用规则

map 的规则

  1. 函数必须可调用
    • function 参数需要是一个函数对象,可以是内置函数、自定义函数或 lambda 表达式。
  2. 可迭代对象
    • iterable 参数必须是可迭代对象(如列表、元组、字符串等)。
  3. 多输入可迭代对象
    • 如果有多个可迭代对象,它们的长度应一致,否则会以最短的可迭代对象为准。

lambda 的规则

  1. 只能有一个表达式
    • 不能包含多个语句或复杂逻辑。
  2. 匿名
    • 不会保存函数名,适用于短期使用的场景。
  3. 可返回值
    • 自动返回表达式的结果,无需显式写 return

4. 示例应用

map 和 lambda 的结合

  1. 对列表中的每个元素求平方
python


复制代码
numbers = [1, 2, 3, 4]
squares = map(lambda x: x**2, numbers)
print(list(squares))
# 输出: [1, 4, 9, 16]
  1. 对两个列表的元素逐一相加
a = [1, 2, 3]
b = [4, 5, 6]
result = map(lambda x, y: x + y, a, b)
print(list(result))
# 输出: [5, 7, 9]

结合其他函数

  1. 过滤和转换
    • 结合 filterlambda,先过滤再转换。
numbers = [1, 2, 3, 4, 5, 6]
even_squares = map(lambda x: x**2, filter(lambda x: x % 2 == 0, numbers))
print(list(even_squares))
# 输出: [4, 16, 36]
  1. 排序
    • 结合 sorted 对数据进行排序。
data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
# 输出: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}]

5. 注意事项

  1. 可读性
    • 过于复杂的 lambda 会降低代码可读性,建议用普通函数代替。
  2. 惰性计算
    • map 返回的是惰性对象,需要通过 list() 或其他方式将其转换为实际数据。
  3. 效率
    • maplambda 更适合简单操作,对复杂逻辑建议使用普通函数。

6. 小结

  • map:对可迭代对象的元素逐一应用函数,返回一个惰性结果。
  • lambda:创建短小的匿名函数,适合临时或简单的计算逻辑。
  • 两者结合使用,能极大简化代码,尤其在数据处理和函数式编程中。

标签:map,函数,迭代,result,print,lambda
From: https://www.cnblogs.com/pmna/p/18552481

相关文章

  • 目标检测中的损失函数及其改进方案
    目标检测中的损失函数是模型训练的核心部分,它衡量了模型预测与真实标注之间的差异,并通过优化损失函数来指导模型参数的更新。损失函数通常由多个部分组成,包含了不同层面的误差,具体包括位置损失、分类损失和置信度损失,这些损失合起来决定了模型在目标检测任务中的性能。目标......
  • C++ 编程基础(8)模版 | 8.2、函数模版
    文章目录一、函数模版1、声明与定义2、模版参数3、模板的实例化3.1、隐式实例化3.2、显示实例化4、模版的特化5、注意事项6、总结前言:C++函数模板是一种强大的特性,它允许程序员编写与类型无关的代码。通过使用模板,函数或类可以处理不同的数据类型,而无需重复编写......
  • 机器学习笔记——损失函数、代价函数和KL散度
    本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。损失函数一、回归问题中的损失函数1.均方误差(MeanSquaredError,MSE)定义:描述:MSE衡量的是预测值和真实值之间的平方误差的平均值。对较大的误差会进行更大的惩罚,因此它对异常值(outliers)非常敏感......
  • 【开窗函数】三个SQL题
             本文主要练习一下lag开窗函数的使用!!!一、第一题 建表语句:createtablem1(dtstring,namestring,deptstring,scoreint);insertintom1values('202101','张三','销售',90),('202101','李四......
  • STM32微控制器GPIO库函数
    STM32微控制器GPIO库函数目录概述GPIO库函数基础HAL库与标准外设库GPIO库函数分类GPIO数学基础电阻分压公式输入电流计算输出驱动能力功率计算RC时间常数GPIO应用实例LED控制按钮输入与中断串行通信PWM信号生成常见问题与解决方法GPIO引脚无法正确读取输入状......
  • Microsoft Visual Studio VS dumpbin使用查看.obj、.lib、.dll、.exe文件头、段函数
    前言全局说明dumpbin是VS自带的MicrosoftCOFF二进制文件转换器,它显示有关通用对象文件格式(COFF)二进制文件的信息。可以使用dumpbin检查COFF对象文件、标准COFF对象库、可执行文件和动态链接库等。被查看的文件名后缀可以为:.obj、.lib、.dll、.exe一、说明正确情况下,安......
  • Windows查看zipfldr.dll动态库中的段函数
    前言全局说明dll是Win中的动态库,开发时想要调用其中的段函数,就要指定,但怎么知道dll中有哪些段函数呢?就需要用工具查看了。一、说明环境:Windows7旗舰版VisualStudio2013二、2.1文件名:2.2文件名:三、3.1文件名:3.2文件名:四、4.1文件名:......
  • ThinkPHP自动完成中使用函数与回调方法
    在ThinkPHP框架中,自动完成(autocompletion)是一种在模型对象赋值时自动执行一些操作的功能。这些操作可以是字段的格式化、验证、转换等。在自动完成中,你可以使用函数和回调方法来实现各种自定义功能。使用函数你可以直接在自动完成配置中使用PHP内置函数或自定义函数。示例:......
  • ES6 Set和Map数据结构用法详解
    文章目录前言Set数据结构创建Set添加元素删除元素删除所有数据获取set的大小(类似于数组的长度)检查是否包含某个元素四种遍历set的方法1.for...of循环2.forEach方法3.转换为数组后使用for循环4.keys(),values(),entries()集合运算方法Map数据结构创建Map添加元素(设......
  • java day13 Set集合 & Map集合 & Stream流
    目录​编辑1.Set集合: 1.Set集合的特点:  2.HashSet的底层原理:​编辑  3.LinkedHashSet集合的底层原理:  4.TreeSet集合:2.Map集合: 1.Map集合概述: 2.Map集合的常用方法:3.Map集合的遍历方式:  4.Map集合的实现类:3.Stream流:1.获取流的方法:2.流......