当前位置: 首页 > news >正文

python中的map函数

目录

初识map函数

什么是map函数

map函数的定义

map函数的原理

map函数的运用

常见试题类型

对单个列表进行处理

同时处理多个列表

搭配内置函数

对字符串进行映射

map函数与for循环的对比


 

初识map函数

什么是map函数

map函数是Python的一个内置高阶函数,用来对可迭代对象(如列表、元组、集合等)中的每个元素依次应用某个函数,并返回一个map对象(迭代器),需要用list、tuple等函数进行元素数据类型转换才能看到结果。

map函数的定义

语法结构:

map(function, iterable)

function:函数对象,用于处理每个元素,可以是自定义函数、内置函数或lambda匿名函数。

iterable:可迭代对象,可以有多个(比如列表 (list)、元组 (tuple)、set集合 ()、字符串 (str)、字典的键/值/项)。

map函数的原理

  • map函数依次从iterable中取出元素。

  • 把取出的元素传入function,得到结果。

  • 继续处理下一个元素,直到可迭代对象被遍历完。

  • 返回一个惰性迭代器(不会立刻计算所有结果),需要用list、tuple等函数转换才能看到所有值。

map函数的运用

常见试题类型

对单个列表进行处理

例如,小小勇者在村口发现了一片果园,里面的苹果编号从 1 到 4。村长交给他一个魔法——“甜化术”,能让苹果甜度变为编号的平方。如果一个个去施法很慢,但map函数可以一次对所有苹果施法。

# 苹果编号
apples = [1, 2, 3, 4]
# 使用map函数批量处理
sweetness = map(lambda x: x ** 2, apples)
# 需要的时候再取出结果
print(list(sweetness))

对代码进行运行测试:

同时处理多个列表

例如,勇者接到“面包坊”的订单——制作 3 份面团。他手上有一袋“面粉重量表”:

[100, 200, 300]

和一袋“水重量表”:

[50, 60, 70]

需要按一一对应的重量混合。map函数就像是“合成术”,让每份面粉和水自动合并成面团重量。

# 面粉重量
flour = [100, 200, 300]
# 水重量
water = [50, 60, 70]
# 使用map函数进行合成处理
dough = map(lambda f, w: f + w, flour, water)
print(list(dough))

对代码进行运行测试:

搭配内置函数

例如,勇者在魔法书库找到三卷古老卷轴:fireball、heal、shield。他想知道这些卷轴咒语的长度,以便计算学习所需的时间。不用自己数,map函数搭配len函数,就能直接批量得出结果。

scrolls = ["fireball", "heal", "shield"]
# 批量计算咒语长度
lengths = map(len, scrolls)
print(list(lengths))

对代码进行运行测试:

对字符串进行映射

例如,勇者的伙伴们各自戴着名字牌,名字是小写的(a, b, c)。为了在城堡晚宴上更正式,他们决定把名字牌全部改成大写。勇者用 map() 配合 str.upper,一口气完成了改造。

names = ['a', 'b', 'c']
# 批量改成大写
upper_names = map(str.upper, names)
print(list(upper_names))

对代码进行运行测试:

map函数与for循环的对比

特点map函数for循环
写法简洁,结合lambda很紧凑更直观
返回值惰性迭代器直接处理列表
速度对大数据更高效数据小差异不大
可读性初学者可能觉得陌生容易理解

例如,勇者要把战利品的价值提升到原来的平方值。如果用普通的 for 循环,他得一个个施法;如果用 map(),他能一口气对所有战利品施法,节省很多时间。

treasures = [1, 2, 3]
# for 循环施法
res1 = []
for t in treasures:res1.append(t ** 2)# map 魔法施法
res2 = list(map(lambda t: t ** 2, treasures))print(f'for循环的运行结果:{res1}')
print(f'map函数的运行结果:{res2}')

对代码进行运行测试:

两种方法结果相同,但map函数写法更简洁,尤其在数据量大时更高效。

http://www.dtcms.com/a/331946.html

相关文章:

  • 记录LiveData使用及原理
  • Unity宝箱随机事件实现指南
  • AI三国杀:马斯克炮轰苹果“偏袒”OpenAI,Grok与ChatGPT的应用商店战争揭秘
  • 【昇腾】VirtualBox虚拟机下搭建Ubuntu 22.04环境给TF卡制卡报读写IO错误的问题处理_20250814
  • 【CF】Day127——杂题 (数论 gcd | 数论 gcd | 博弈论 | 二分图判断 | 贪心 + 暴力 / 二分答案 | 数论 gcd + 动态规划)
  • linux 主机驱动(SPI)与外设驱动分离的设计思想
  • 把大模型当“温度计”——基于 LLM 的分布式系统异常根因定位实战
  • 企业可商用的conda:「Miniforge」+「conda-forge」
  • Data Augmentation数据增强
  • 快速部署一个鉴黄服务
  • Android 项目:画图白板APP开发(二)——历史点、数学方式推导点
  • SQL详细语法教程(三)mysql的函数知识
  • 区块链 + 域名Web3时代域名投资的新风口(上)
  • Gemma 3 多模态推理 通过vllm运行Gemma-3-27B-IT模型的推理服务
  • 【系统安装】虚拟机中安装win10IOT企业版系统记录
  • 解决安装 scikit-learn==1.3.1 时出现的版本匹配错误
  • PHP 开发全解析:从基础到实战的进阶之路
  • sFlow原理与配置
  • Java面试场景题大全精简版
  • MySql——聚簇索引(主键索引)和非聚簇索索引(非主键索引)引区别(即聚集索引和非聚集索引区别)
  • MyBatis学习总结(六)
  • 【面板数据】各省及市省级非物质文化遗产数据合集(2005-2024年)
  • 《嵌入式 C 语言编码规范与工程实践个人笔记》参考华为C语言规范标准
  • 解锁 Docker:一场从入门到源码的趣味解谜之旅
  • 卸载python遇到msi文件权限不足
  • Python闭包详解:理解闭包与可变类型和不可变类型的关系
  • 新手如何高效运营亚马逊跨境电商:从传统SP广告到DeepBI智能策略
  • docker 容器管理入门教程
  • 身份全景图
  • Encoder-Decoder Model编码器-解码器模型