首先我们了解一个概念:迭代

  迭代是访问集合元素的⼀种⽅式。迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

我们已经知道可以对listtuplestr等类型的数据使for...in...的循环语法从其中依次拿到数据进⾏使⽤,我们把这样的过程称为遍历,也叫迭代。

一、filter()函数

  filter()函数实现过滤功能,它有两个参数,第一个参数为None时或一个函数对象,第二个参数为一个可迭代对象

  当第一个参数为None时,实现将可迭代对象的每一个元素值为False的过滤掉,生成一个仅包含元素值为True的新可迭代对象

1 list1 = ['詹姆斯','字母哥',0,False,'废青123']
2 lsit2 = filter(None,list1)
3 
4 lsit2
5 <filter object at 0x04002470>
6 list(lsit2)
7 ['詹姆斯', '字母哥', '废青123']
View Code

  当第一个参数为一个函数对象时,那么此时作为参数的函数会调用第二个可迭代对象里面的每一个元素作为实参,并按返回值对迭代对象的元素进行过滤,返回值为False的被过滤掉,剩下的可迭代对象的元素组成一个新的可迭代对象并返回

1 list(range(10))
2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3 list(filter(lambda x:x%2, range(10)))
4 [1, 3, 5, 7, 9]
View Code

 

二、map()函数

  map()函数与filter()函数形式一致,实现对可迭代对象的映射,但其第一个参数必须是一个函数对象,而且map()函数是将经过函数对象处理后的返回值作为新的元素组成一个可迭代对象

1 list(range(10))
2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3 list(map(lambda x:x%2, range(10)))
4 [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
View Code