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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
浅析Python装饰器以及装饰器模式
May 28 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
详解用python写一个抽奖程序
May 10 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
python批量修改xml属性的实现方式
Mar 05 Python
python实现取余操作的简单实例
Aug 16 Python
Python如何执行系统命令
Sep 23 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
PHP 代码规范小结
2012/03/08 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
服装厂厂长职责
2013/12/16 职场文书
经济贸易系求职信
2014/08/04 职场文书
停车场管理协议书范本
2014/10/08 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
python 下载文件的几种方式分享
2021/04/07 Python
mysql中between的边界,范围说明
2021/06/08 MySQL
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL