资讯专栏INFORMATION COLUMN

python中的map()函数

Hancock_Xu / 1763人阅读

摘要:例例如文档中所说,函数将方法映射到中的每一个元素,即对中的每个元素调用方法,并返回结果的。需要注意的是函数可以多个可迭代参数,前提是方法能够接收这些参数。即在每个中,取出下标相同的元素,执行。最重要的是,如果不在前加上,函数根本就不会执行

先来看一下官方文档:

map(function, iterable, ...)

Apply function to every item of iterable and return a list of the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all in parallel. If one iterable is shorter than another it is assumed to be extended withNoneitems. If function isNone, the identity function is assumed; if there are multiple arguments, map() returns a list consisting of tuples containing the corresponding items from all iterables (a kind of transpose operation). The iterable arguments may be a sequence or any iterable object; the result is always a list.

1.对可迭代函数"iterable"中的每一个元素应用‘function’方法,将结果作为list返回。
例:

例1:

>>> def add(x):
...     return x+1
... 
>>> aa = [11,22,33]
>>> map(add,aa)
[12, 23, 34]

如文档中所说,map函数将add方法映射到aa中的每一个元素,即对aa中的每个元素调用add方法,并返回结果的list。需要注意的是map函数可以多个可迭代参数,前提是function方法能够接收这些参数。否则将报错。例子如下:
如果给出多个可迭代参数,则对每个可迭代参数中的元素‘平行’的应用‘function’。即在每个list中,取出下标相同的元素,执行abc()。

例2:
>>> def abc(a, b, c):
...     return a*10000 + b*100 + c
... 
>>> list1 = [11,22,33]
>>> list2 = [44,55,66]
>>> list3 = [77,88,99]
>>> map(abc,list1,list2,list3)
[114477, 225588, 336699]

>>> a = map(ord,"abcd")
>>> list(a)
[97, 98, 99, 100]
>>> a = map(ord,"abcd","efg") # 传入两个可迭代对象,所以传入的函数必须能接收2个参数,ord不能接收2个参数,所以报错
>>> list(a)
Traceback (most recent call last):
  File "", line 1, in 
    list(a)
TypeError: ord() takes exactly one argument (2 given)

>>> def f(a,b):
    return a + b

当传入多个可迭代对象时,且它们元素长度不一致时,生成的迭代器只到最短长度。

>>> a = map(f,"abcd","efg") # 选取最短长度为3
>>> list(a)
["ae", "bf", "cg"]

2.如果"function"给出的是‘None’,则会自动调用一个默认函数,请看例子:

例3:
>>> list1 = [11,22,33]
>>> map(None,list1)
[11, 22, 33]
>>> list1 = [11,22,33]
>>> list2 = [44,55,66]
>>> list3 = [77,88,99]
>>> map(None,list1,list2,list3)
[(11, 44, 77), (22, 55, 88), (33, 66, 99)]

3.最后一点需要注意的是,map()在python3和python2中的差异(特别是从py2转到py3的使用者很可能遇到):
在python2中,map会直接返回结果,例如:
map(lambda x: x, [1,2,3])
可以直接返回
[1,2,3]
但是在python3中, 返回的就是一个map对象:

如果要得到结果,必须用list作用于这个map对象。
最重要的是,如果不在map前加上list,lambda函数根本就不会执行

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44671.html

相关文章

  • Python 进阶之路 (五) map, filter, reduce, zip 一网打尽

    摘要:另外,这些中的每一个都是纯函数,有返回值。例如,如果要计算整数列表的累积乘,或者求和等等基础语法参数是连续作用于每一个元素的方法,新的参数为上一次执行的结果,为被过滤的可迭代序列返回值最终的返回结果在中,是一个内置函数。 简洁的内置函数 大家好,我又回来了,今天我想和大家分享的是Python非常重要的几个内置函数:map,filter,reduce, zip。它们都是处理序列的便捷函数...

    ccj659 评论0 收藏0
  • Python进阶笔记

    摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。和不同的是,把传入的函数依次作用于每个元素,然后根据返回值是还是决定保留还是丢弃该元素。字符串给出当前平台使用的行终止符。程序中间的退出,为正常退出。 列表生成式 函数的参数类型 lambda函数 map, reduce, filter, sorted函数 eval, exec, join, zip函数 itertools中的...

    ygyooo 评论0 收藏0
  • Python Map函数保姆级使用教程

      小编写这篇文章的一个主要目的,主要是给大家去做一个介绍,介绍的内容涉及到Python Map函数的一些使用方法,还会涉及到一些具体的保姆级的一些相关使用教程,具体的内容,下面就给大家详细解答下。  众所周知,我们在使用python的时候,会大大的提高我们的一个工作效率,对我们工作效率的提高有一个本质的提升。  那么,本文会给大家统一的做个解答,解答的内容还是涉及到相关的Python Map函数...

    89542767 评论0 收藏0
  • SICP Python 描述 2.3 序列

    摘要:序列不是特定的抽象数据类型,而是不同类型共有的一组行为。不像抽象数据类型,我们并没有阐述如何构造序列。这两个选择器和一个构造器,以及一个常量共同实现了抽象数据类型的递归列表。 2.3 序列 来源:2.3 Sequences 译者:飞龙 协议:CC BY-NC-SA 4.0 序列是数据值的顺序容器。不像偶对只有两个元素,序列可以拥有任意(但是有限)个有序元素。 序列在计算机科学中...

    AlexTuan 评论0 收藏0
  • 功能式Python中的探索性数据分析

    摘要:在中运行不同的实验似乎比试图在中进行这种探索性的操作更有效。理论上,我们可以在中做很多的探索。我们如何继续第一步是获取格式的原始数据。这些列将包含来自使用该代理键的一个请求的一行数据。这是重构的另一部分。数据的最终显示保持完全分离。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 这里有一些技巧来处理日志文件提取。假设我们正在查看一些Enterprise Splunk提取。...

    phodal 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<