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 函数的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]