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实现八大排序算法
Aug 13 Python
python奇偶行分开存储实现代码
Mar 19 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
python 消费 kafka 数据教程
Dec 21 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
python实现将中文日期转换为数字日期
Jul 14 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 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
基于mysql的bbs设计(五)
2006/10/09 PHP
ADODB类使用
2006/11/25 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
php7 新增功能实例总结
2020/05/25 PHP
javascript比较文档位置
2008/04/08 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
python删除某个目录文件夹的方法
2020/05/26 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
python和JavaScript哪个容易上手
2020/06/23 Python
请介绍一下Ant
2016/07/22 面试题
质检员岗位职责
2013/12/17 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
校园安全检查制度
2014/02/03 职场文书
2014年元旦活动方案
2014/02/15 职场文书
促销活动总结范文
2014/04/30 职场文书
小学课外阅读总结
2014/07/09 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
出生证明范本
2015/06/15 职场文书
九不准学习心得体会
2016/01/23 职场文书
标准发言稿结尾
2019/07/18 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书