找回密码
 会员注册
查看: 19|回复: 0

Python之map()函数详解

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71625
发表于 2024-9-6 15:11:23 | 显示全部楼层 |阅读模式
文章目录一、map()函数简介1.1map()函数基本语法1.2map()函数+lambda表达式1.3map()函数输入多个可迭代对象iterable1.4查看返回的迭代器内容二、map()函数示例示例一:使用map()函数操作字符串列表示例二:使用map()函数操作元组列表参考资料一、map()函数简介当我们使用列表或者元组时,经常需要对列表元素进行数学变换操作并返回一个新的列表。例如,我们想要将列表bonuses中的每个元素都乘以2:bonuses=[100,200,300]1为此,我们可以使用一个for循环遍历列表,将每个元素乘以2,然后将结果添加到一个新的列表中:bonuses=[100,200,300]new_bonuses=[]forxinbonuses:new_bonuses.append(x*2)print(new_bonuses)#输出:[200,400,600]123456781.1map()函数基本语法Python提供了一个内置的map()函数,可以更加方便地执行这类操作。以下是map()函数的基本语法:map(function,iterable)1参数解释如下:function:一个函数或方法iterable:一个或多个序列(可迭代对象)map()函数的作用是:对序列iterable中每一个元素调用function函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。回到上面的示例,我们可以定义一个乘以2的函数,然后使用map()函数调用该函数:defdouble_func(x):returnx*2bonuses=[100,200,300]iterator=map(double_func,bonuses)1234561.2map()函数+lambda表达式或者也可以使用lambda表达式对代码进一步进行简化,例如:bonuses=[100,200,300]iterator=map(lambdax:x*2,bonuses)print(list(iterator))#输出:[200,400,600]1231.3map()函数输入多个可迭代对象iterableb1=[100,200,300]b2=[1,2,3]iterator=map(lambdax,y:x*y,b1,b2)print(list(iterator))#输出:[100,400,900]123451.4查看返回的迭代器内容使用map函数获得了迭代器iterator后,我们如何查看其中的内容呢?直接输出迭代器iterator,输出mapobject及其物理地址:print(iterator)#输出:12使用for循环对其进行遍历迭代器iterator:forxiniterator:print(x)#输出:#200#400#600123456使用list()函数将迭代器转换为一个列表:print(list(iterator))#输出:[200,400,600]12二、map()函数示例接下来我们继续看几个使用map()函数操作列表的示例。示例一:使用map()函数操作字符串列表以下示例使用map()函数对字符串列表中的每个元素进行首字母大写转换,然后返回一个新的列表:names=['david','peter','jenifer']new_names=map(lambdaname:name.capitalize(),names)print(list(new_names))123输出结果如下:['David','Peter','Jenifer']1示例二:使用map()函数操作元组列表假设存在以下由多个元组组成的购物车列表:carts=[['SmartPhone',400],['Tablet',450],['Laptop',700]]123我们需要计算每个产品的纳税额,税率为10%。同时,我们需要将纳税额作为第三个元素添加到每个产品信息中。最终返回的列表如下:[['SmartPhone',400,40.0],['Tablet',450,45.0],['Laptop',700,70.0]]123为此,我们可以使用map()函数创建一个新的元素,将纳税额作为它的值:carts=[['SmartPhone',400],['Tablet',450],['Laptop',700]]TAX=0.1carts=map(lambdaitem:[item[0],item[1],item[1]*TAX],carts)print(list(carts))12345678参考资料【Python基础教程】第37篇map()函数:https://zhuanlan.zhihu.com/p/474884078
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 05:46 , Processed in 0.577781 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表