Python自带函数map(),zip()等

1.map()函数

map()函数的目的是对每个成员迭代执行一个函数操作,最后返回的是一个列表

map(function, sequence[, sequence, ...]) -> list

In [82]: def add100(x):
   ....:     return x+100
   ....: 

In [83]: map(add100,(44,22,66))
Out[83]: [144, 122, 166]

定义一个函数add100(x),map(add100,(44,22,66))就是迭代的对每个数字进行add100(x)的操作,最后返回一个列表数据

In [84]: def abc(a,b,c):
   ....:     return a*100 + b*10 + c
   ....: 
In [85]: map(abc,(1,2,3),(4,5,6),(7,8,9))
Out[85]: [147, 258, 369]

如果需要迭代执行的函数需要多个参数,那么就为map()提供多个元组

In [91]: map(None,range(3))
Out[91]: [0, 1, 2]
In [92]: map(None,range(3))
Out[92]: [0, 1, 2]
In [93]: map(None,range(3),‘abc‘,(44,55,66))
Out[93]: [(0, ‘a‘, 44), (1, ‘b‘, 55), (2, ‘c‘, 66)]
In [94]: map(None,range(3),‘abc‘)
Out[94]: [(0, ‘a‘), (1, ‘b‘), (2, ‘c‘)]
In [95]: map(None,range(3),range(3))
Out[95]: [(0, 0), (1, 1), (2, 2)]

如果想将一行字符串转换成字典就可以这样

In [97]: d=‘zk_version\t3.4.6‘
In [99]: map(str.strip,d.split(‘\t‘))
Out[99]: [‘zk_version‘, ‘3.4.6‘]
In [100]: key,value=map(str.strip,d.split(‘\t‘))
In [101]: key
Out[101]: ‘zk_version‘
In [102]: value
Out[102]: ‘3.4.6‘
In [103]: result[key]=value
In [104]: result
Out[104]: {‘zk_version‘: ‘3.4.6‘}

2.zip()函数

zip()的目的是返回一个元组列表

zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]

In [107]: L1=[1,2,3,4]
In [108]: L2=[‘a‘,‘b‘,‘c‘,‘d‘]
In [109]: zip(L1,L2)
Out[109]: [(1, ‘a‘), (2, ‘b‘), (3, ‘c‘), (4, ‘d‘)]
In [110]: L3=[10.0,20.0,30.0,40.0]
In [111]: zip(L1,L2,L3)
Out[111]: [(1, ‘a‘, 10.0), (2, ‘b‘, 20.0), (3, ‘c‘, 30.0), (4, ‘d‘, 40.0)]

3.dict()函数

dict()最后返回的是一个字典类型

In [141]: L1
Out[141]: [1, 2, 3, 4]

In [142]: L2
Out[142]: [‘a‘, ‘b‘, ‘c‘, ‘d‘]

In [143]: zip(L2,L1)
Out[143]: [(‘a‘, 1), (‘b‘, 2), (‘c‘, 3), (‘d‘, 4)]

In [144]: dict(zip(L2,L1))
Out[144]: {‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4}

In [145]: dict(a=10,b=20,c=30)
Out[145]: {‘a‘: 10, ‘b‘: 20, ‘c‘: 30}

In [146]: dict([(‘a‘,100),(‘b‘,200),(‘c‘,300)])
Out[146]: {‘a‘: 100, ‘b‘: 200, ‘c‘: 300}

参考资料:

https://docs.python.org/2/library/functions.html#zip

http://stackoverflow.com/questions/672172/using-python-map-and-other-functional-tools

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

时间: 2024-11-06 12:53:57

Python自带函数map(),zip()等的相关文章

python——lambda,filter,map,reduce

lambda函数 使用方法:lambda [arg1[,arg2,arg3,...,argn]] : expression 如: add = lambda(x,y:x+y) add(1,2) 结果为1+2=3 filter函数 filter(bool_func,seq) 此函数的功能相当于过滤器,通过返回值为bool的函数bool_func来迭代遍历seq中的每个元素: 结果返回一个seq中使bool_func返回值为true的元素的序列. filter(lambda x : x%2 == 0,

Python函数式编程——map()、reduce()

文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年Apache的Hadoop项目[2]正式将MapReduce纳入到项目中. 好吧,闲话少说,今天要介绍的是Python函数式编程中的另外两个内建函数map()和reduce(),而不是Google的MapReduce. 1.ma

python 自己实现map

python 自己实现map 先来看看map的本来表现 l =[1, 2, 3, 4, 5, 6, 7, 8, 9] m = map(str,l) print(next(m)) print(next(m)) print(list(m)) 1 2 ['3', '4', '5', '6', '7', '8', '9'] map产生的是一个Iterator,是个惰性序列,next(m)会消耗它,可以使用list(m)将整个序列都计算出来 看看智能提示 怎么介绍的 class map(func, ite

Effective Python 小笔记之 zip 函数

环境:Python 3.5.1 CentOS 7 zip函数可以同时遍历两个迭代器. 在编写Python代码时,通常要面对很多列表,而这些列表中的对象,可能是相互关联的.如下例:     names = ['Cecilia', 'Lily', 'Maria']     length = [len(word) for word in names] 对于上例中的源列表和派生列表,相同索引处有关联关系,以此再引申出一个例子:     longest_name = None     max_length

【python】filter,map和reduce函数介绍

filter(function, iterable)map(function, iterable)reduce(function, sequence) filter将 function依次作用于iterable的每个元素,如果返回值为true, 保留元素,否则从iterable里面删除.function必须返回是一个bool类型的函数.例如: def test(x): return (x > 3) filter(test, [1, 2, 3, 4, 5]) =====> [4, 5] map将

Python中的Map/Reduce

MapReduce是一种函数式编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性.它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组. 然而在python中,ma

python中的map()函数

MapReduce的设计灵感来自于函数式编程,这里不打算提MapReduce,就拿python中的map()函数来学习一下. 文档中的介绍在这里: 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 man

js中map和python中的map

js 中的map: 由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81] var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda 函数,我们根本没为它命名.这是因为 lambda 函数的功能是执行某种简单的表达式或运算,而无需完全定义函数. lambda 函数可以使用任意数量的参数,但表达式只能有一个. x = lambda a, b : a * b print(x(5, 6)) # prints '30' x = lambd