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 strip()函数 介绍
May 24 Python
python求列表交集的方法汇总
Nov 10 Python
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
python使用urllib2提交http post请求的方法
May 26 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
python 图像平移和旋转的实例
Jan 10 Python
详解Python学习之安装pandas
Apr 16 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
python 实现aes256加密
Nov 27 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 getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
写出高质量的PHP程序
2012/02/04 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
深入理解Python中range和xrange的区别
2017/11/26 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
幼儿教师考核制度
2014/01/25 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
财务管理专业自荐书
2014/09/02 职场文书
教师工作失职检讨书
2014/09/18 职场文书
法律意见书范文
2015/05/20 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技