文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python之map()函数详解

2023-09-24 18:45

关注

文章目录

一、map() 函数简介

当我们使用列表或者元组时,经常需要对列表元素进行数学变换操作并返回一个新的列表。例如,我们想要将列表 bonuses 中的每个元素都乘以 2:

bonuses = [100, 200, 300]

为此,我们可以使用一个 for 循环遍历列表,将每个元素乘以 2,然后将结果添加到一个新的列表中:

bonuses = [100, 200, 300]new_bonuses = []for x in bonuses:    new_bonuses.append(x*2)print(new_bonuses)  # 输出:[200, 400, 600]

1.1 map() 函数基本语法

Python 提供了一个内置的 map() 函数,可以更加方便地执行这类操作。
以下是 map() 函数的基本语法:

map(function, iterable)

参数解释如下:

map() 函数的作用是:对序列 iterable 中每一个元素调用 function 函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。

回到上面的示例,我们可以定义一个乘以 2 的函数,然后使用 map() 函数调用该函数:

def double_func(x):    return x* 2bonuses = [100, 200, 300]iterator = map(double_func, bonuses)

1.2 map() 函数+ lambda表达式

或者也可以使用 lambda 表达式对代码进一步进行简化,例如:

bonuses = [100, 200, 300]iterator = map(lambda x: x*2, bonuses)print(list(iterator))  # 输出:[200, 400, 600]

1.3 map() 函数输入多个可迭代对象iterable

b1 = [100, 200, 300]b2 = [1, 2, 3]iterator = map(lambda x,y : x*y, b1, b2)print(list(iterator))  # 输出:[100, 400, 900]

1.4 查看返回的迭代器内容

使用map函数获得了迭代器iterator后,我们如何查看其中的内容呢?

print(iterator)# 输出:
for x in iterator:    print(x)# 输出:# 200# 400# 600
print(list(iterator))# 输出:[200, 400, 600]

二、map() 函数示例

接下来我们继续看几个使用 map() 函数操作列表的示例。

示例一:使用 map() 函数操作字符串列表

以下示例使用 map() 函数对字符串列表中的每个元素进行首字母大写转换,然后返回一个新的列表:

names = ['david', 'peter', 'jenifer']new_names = map(lambda name: name.capitalize(), names)print(list(new_names))

输出结果如下:

['David', 'Peter', 'Jenifer']

示例二:使用 map() 函数操作元组列表

假设存在以下由多个元组组成的购物车列表:

carts = [['SmartPhone', 400],         ['Tablet', 450],         ['Laptop', 700]]

我们需要计算每个产品的纳税额,税率为 10%。同时,我们需要将纳税额作为第三个元素添加到每个产品信息中。最终返回的列表如下:

[['SmartPhone', 400, 40.0],['Tablet', 450, 45.0],['Laptop', 700, 70.0]]

为此,我们可以使用 map() 函数创建一个新的元素,将纳税额作为它的值:

carts = [['SmartPhone', 400],         ['Tablet', 450],         ['Laptop', 700]]TAX = 0.1carts = map(lambda item: [item[0], item[1], item[1] * TAX], carts)print(list(carts))

参考资料

来源地址:https://blog.csdn.net/u012856866/article/details/131660354

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯