map() 对list列操作、行列转换

map() 对list的同一下标操作(对列操作)

读入的参数是(函数,list1,list2,list3)


>>>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]

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


——————————————

>>> 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)]


行列转换了诶~~~~


等同zip……http://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html

x = [1, 2, 3]

y= [4, 5, 6]

z= [7, 8, 9]

xyz=zip(x, y, z)

print xyz

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

——————————————————

基本用法:

Map函数:

原型:map(function, sequence),作用是将一个列表映射到另一个列表,

使用方法:

def f(x):

       return x**2

l = range(1,10)

map(f,l)

Out[3]: [1, 4, 9, 16, 25, 36, 49, 64, 81]

http://my.oschina.net/zyzzy/blog/115096


注意!python3的变化

>>> map(lambda x: x, [1,2,3])  

返回的就是一个map对象

>>> list(map(lambda x: x, [1,2,3]))

[1, 2, 3]

感覺Python3的用意是map用來處理大數據,所以返回 iteration 免得吃掉太多內存,一般情況下用list comprehension,或者直接for循環。

官方不推荐map生成list

http://segmentfault.com/a/1190000000322433

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容