map(function,
iterable,
...)

将function放到迭代的每个元素执行,结果为list。

引自》:http://my.oschina.net/zyzzy/blog/115096

文档中的介绍在这里:

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 iterables 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
add100(x):
2 ... return
x+100
3 ...
4 >>> hh =
[11,22,33]
5 >>> map(add100,hh)
6 [111,
122, 133]

就像文档中说的:对hh中的元素做了add100,返回了结果的list。

2、如果给出了额外的可迭代参数,则对每个可迭代参数中的元素‘并行’的应用‘function’。(翻译的不好,这里的关键是‘并行’)

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

看到并行的效果了吧!在每个list中,取出了下标相同的元素,执行了abc()。

3、如果'function'给出的是‘None’,自动假定一个‘identity’函数(这个‘identity’不知道怎么解释,看例子吧

1 >>> list1 =
[11,22,33]
2 >>> map(None,list1)
3 [11,
22, 33]
4 >>> list1 =
[11,22,33]
5 >>> list2 =
[44,55,66]
6 >>> list3 =
[77,88,99]
7 >>> map(None,list1,list2,list3)
8 [(11,
44, 77), (22,
55, 88), (33,
66, 99)]

用语言解释好像有点拗口 ,例子应该很容易理解。

介绍到这里应该差不多了吧!不过还有东西可以挖掘:

stackoverflow上有人说可以这样理解map():

1 map(f, iterable)
2  
3 基本上等于:
4  
5 [f(x) for
x in
iterable]

赶快试一下:

1 >>> def
add100(x):
2 ... return
x +
100
3 ...
4 >>> list1 =
[11,22,33]
5 >>> map(add100,list1)
6 [101,
102, 103]
7  
8 >>> [add100(i) for
i in
list1]
9 [101,
102, 103]

哦,输出结果一样。原来map()就是列表推导式啊!要是这样想就错了:这里只是表面现象!再来个例子看看:

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

这个例子我们在上面看过了,若是用列表推导应该怎么写呢?我想是这样的:

1 [abc(a,b,c) for
a in
list1
for b
in list2
for c in
list3]

但是看到结果,发现根本不是这么回事:

1 [114477,
114488,
114499, 115577,
115588,
115599, 116677,
116688,
116699, 224477,
224488,
224499, 225577,
225588,
225599, 226677,
226688,
226699, 334477,
334488,
334499, 335577,
335588,
335599, 336677,
336688,
336699]

这便是上面列表推导的结果。怎么会这么多?当然了列表推导可以这么写:

1 result =
[]
2  
3 for
a
in list1:
4 for
b in
list2:
5 for
c in
list3:
6 result.append(abc(abc))

原来如此,若是将三个list看做矩阵的话:

11 22 33
44 55 66
77 88 99

map()只做了列上面的运算,而列表推导(也就是嵌套for循环)做了笛卡尔乘积。

OK,就写到这里。仅个人理解,如有差错请指正,多谢!

上面的例子有些来自于这里:

http://infohost.nmt.edu/tcc/help/pubs/python/web/map-function.html

http://stackoverflow.com/questions/10973766/understanding-the-map-function-python

python的map的更多相关文章

  1. Python【map、reduce、filter】内置函数使用说明(转载)

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  2. python基础——map/reduce

    python基础——map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Pro ...

  3. python之map、filter、reduce、lambda函数 转

    python之map.filter.reduce.lambda函数  转  http://www.cnblogs.com/kaituorensheng/p/5300340.html 阅读目录 map ...

  4. 【转】Python 中map、reduce、filter函数

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  5. 使用Python实现Map Reduce程序

    使用Python实现Map Reduce程序 起因 想处理一些较大的文件,单机运行效率太低,多线程也达不到要求,最终采用了集群的处理方式. 详细的讨论可以在v2ex上看一下. 步骤 MapReduce ...

  6. python中map()和dict()的用法

    map()用法 map()是python的内置函数,会根据提供的函数对指定序列做映射. 语法: map(func, iter, ...) 其中func为一个功能函数,iter表示可迭代参数序列.map ...

  7. Python【map、reduce、filter】内置函数使用说明

    题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...

  8. python之map

    python之Map函数   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # map()函数使用举例 # 功能: ...

  9. python之map、filter、reduce、lambda函数

    map map函数根据提供的函数对指定的序列做映射,定义:map(function, sequence[,sequence,...])--->list 例1 >>> map(l ...

  10. Python的map、filter、reduce函数 [转]

    1. map函数func作用于给定序列的每个元素,并用一个列表来提供返回值. map函数python实现代码: def map(func,seq): mapped_seq = []        fo ...

随机推荐

  1. Objective-C方法与函数的区别

    Objective-C方法与函数的区别 方法是唯对象所有 函数是不依赖于对象存在的 方法 函数 - (void)test; void test(); 方法是以减号 - 开头 - 类型要用()括起来 - ...

  2. Scala:访问修饰符、运算符和循环

    http://blog.csdn.net/pipisorry/article/details/52902234 Scala 访问修饰符 Scala 访问修饰符基本和Java的一样,分别有:privat ...

  3. Gazebo機器人仿真學習探索筆記(六)工具和实用程序

    Gazebo附带了许多工具和实用程序. 这些教程说明了这些可用的工具,以及如何使用它们. 主要有: 1 记录和播放 2 日志过滤 3 应用力/扭矩 4 HDF5数据集 官网介绍通俗具体,非常容易,请参 ...

  4. Dynamics CRM2016 Web API之通过实体的primary key查询记录(二)

    继续接上篇,还是通过primary key来查询数据,本篇介绍两个我个人比较喜欢的查询方式,一个是查询单个字段,一个是查询lookup关联实体中的属性字段. 先来看如何查询单个字段,只需要在url的最 ...

  5. 数据标准化/归一化normalization

    http://blog.csdn.net/pipisorry/article/details/52247379 基础知识参考: [均值.方差与协方差矩阵] [矩阵论:向量范数和矩阵范数] 数据的标准化 ...

  6. springMVC源码分析--动态样式ThemeResolver(二)

    在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下. ThemeResolve ...

  7. ubuntu常用文件搜索命令

    1.find find [搜索路径] [搜索关键字] 比如查找/test中文件名为t5.tmp的文件: 查找根目录下大于100M的文件 注意,这里的204800单位是块,1块=512字节 在根目录下查 ...

  8. Eclipse 主题

    Eclipse开发环境默认都是白底黑字的,看到同事的Xcode中设置的黑灰色背景挺好看的,就去网络上查了一下.发现Eclipse也可以设置主题. http://eclipsecolorthemes.o ...

  9. (七十四)iOS8之前使socket可以后台运行的方法

    对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设 ...

  10. Swift基础之OC文件调用Swift代码(在上次的基础上写的)

    前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父 ...