zip()函数:
格式:**zip([iterable, …])**
zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数中最短对象的长度相同。
例如:
①**x = [1,2,3,4,5]y = ['a','b','c','d']**
**xy = zip(x,y)**
**print xy**
**for a,b in zip(x,y):**
** print (a, end = '')**
** print (b,end = '')**
**#结果**
**[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]**
**1a2b3c4d**
②
x = [[1,2,3,4],[‘a’,’b’,’c’],[7,8,9]] y = zip(*x) print y for a in y: print a for a,b,c in zip(*x): print a print b print c
(1, ‘a’, 7), (2, ‘b’, 8), (3, ‘c’, 9) (2, ‘b’, 8) (3, ‘c’, 9) 1 a 7 2 b 8 3 c 9
filter()函数:
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。
语法:
**filter(function,iterable) **
**# 其中function为函数,iterable为序列**
序列中的每个元素作为参数传递给函数,返回True或者False,最后将返回True/值为1的元素放到新列表中,值为0,False的将会剔除。
实例:
筛选奇数:**def is_odd(n):**
** return n%2 == 1**
**lst1 = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])**
**# lst = [1,3,5,7,9]**
map()函数:
格式:map(**func**, seq1[, seq2,…])
map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。
一、当seq只有一个时,将函数func作用于这个seq的每个元素上,并得到一个新的seq。
让我们来看一下只有一个seq的时候,map()函数是如何工作的。
从上图可以看出,函数func函数会作用于seq中的每个元素,得到func(seq[n])组成的列表。下面举得例子来帮助我们更好的理解这个工作过程。
map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]
一个seq时,可以使用filter()函数代替,那什么情况不能代替呢?
2、当seq多于一个时,map可以并行(注意是并行)地对每个seq执行如下图所示的过程:
例子:**>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])**
**[8, 16, 6]**
参数为None时:**>>> print map(None, [2,4,6],[3,2,1])**
**[(2, 3), (4, 2), (6, 1)]**
等同于:**>>> print zip([2,4,6],[3,2,1])**