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()函数是如何工作的。

image.png
从上图可以看出,函数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执行如下图所示的过程:
image.png

例子:
**>>> 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])**