Python Map 函数的使用


Posted in Python onAugust 28, 2020

map()是一个 Python 内建函数,它允许你不需要使用循环就可以编写简洁的代码。

一、Python map() 函数

这个map()函数采用以下形式:

map(function, iterable, ...)

它需要两个必须的参数:

  • function - 针对每一个迭代调用的函数
  • iterable - 支持迭代的一个或者多个对象。在 Python 中大部分内建对象,例如 lists, dictionaries, 和 tuples 都是可迭代的。

在 Python 3 中,map()返回一个与传入可迭代对象大小一样的 map 对象。在 Python 2中,这个函数返回一个列表 list。

让我们看看一个例子,更好地解释map()函数如何运作的。假如我们有一个字符串列表,我们想要将每一个元素都转换成大写字母。

想要实现这个目的的一种方式是,使用传统的for循环:

directions = ["north", "east", "south", "west"]
directions_upper = []

for direction in directions:
  d = direction.upper()
  directions_upper.append(d)

print(directions_upper)

输出:

['NORTH', 'EAST', 'SOUTH', 'WEST'

使用 map() 函数,代码将会非常简单,非常灵活。

def to_upper_case(s):
  return s.upper()

directions = ["north", "east", "south", "west"]

directions_upper = map(to_upper_case, directions)

print(list(directions_upper))

我们将会使用list()函数,来将返回的 map 转换成 list 列表:

输出:

['NORTH', 'EAST', 'SOUTH', 'WEST']

如果返回函数很简单,更 Python 的方式是使用 lambda 函数:

directions = ["north", "east", "south", "west"]

directions_upper = map(lambda s: s.upper(), directions)

print(list(directions_upper))

一个 lambda 函数是一个小的匿名函数。
下面是另外一个例子,显示如何创建一个列表,从1到10。

squares = map(lambda n: n*n , range(1, 11))
print(list(squares))

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

`range()` 函数生成一系列的整数。

二、对多个迭代对象使用map()

你可以将任意多的可迭代对象传递给map()函数。回调函数接受的必填输入参数的数量,必须和可迭代对象的数量一致。

下面的例子显示如何在两个列表上执行元素级别的操作:

def multiply(x, y):
 return x * y

a = [1, 4, 6]
b = [2, 3, 5]

result = map(multiply, a, b)

print(list(result))

输出:

[2, 12, 30]

同样的代码,使用 lambda 函数,会像这样:

a = [1, 4, 6]
b = [2, 3, 5]

result = map(lambda x, y: x*y, a, b)

print(list(result))

当提供多个可迭代对象时,返回对象的数量大小和最短的迭代对象的数量一致。

让我们看看一个例子,当可迭代对象的长度不一致时:

a = [1, 4, 6]
b = [2, 3, 5, 7, 8]

result = map(lambda x, y: x*y, a, b)

print(list(result))

超过的元素 (7 和 8 )被忽略了。

[2, 12, 30]

三、总结

Python 的 map()函数作用于一个可迭代对象,使用一个函数,并且将函数应用于这个可迭代对象的每一个元素。

以上就是Python Map 函数的使用的详细内容,更多关于Python Map 函数的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
小结Python用fork来创建子进程注意事项
Jul 03 Python
Python数据结构之Array用法实例
Oct 09 Python
Python爬取国外天气预报网站的方法
Jul 10 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
深入理解python协程
Jun 15 Python
python实现单机五子棋
Aug 28 #Python
Python3+selenium配置常见报错解决方案
Aug 28 #Python
Python 中如何写注释
Aug 28 #Python
Python操作Word批量生成合同的实现示例
Aug 28 #Python
Python接口自动化测试的实现
Aug 28 #Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 #Python
Python自动登录QQ的实现示例
Aug 28 #Python
You might like
用PHP实现文件上传二法
2006/10/09 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
js打开windows上的可执行文件示例
2014/05/27 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Python标准库之Sys模块使用详解
2015/05/23 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
pytorch中的inference使用实例
2020/02/20 Python
python利用faker库批量生成测试数据
2020/10/15 Python
Python的信号库Blinker用法详解
2020/12/31 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
干部对照检查材料范文
2014/08/26 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
给客户的感谢信
2015/01/21 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
在Python中如何使用yield
2021/06/07 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
VUE递归树形实现多级列表
2022/07/15 Vue.js