filter
简单来说就是删选数据
In [7]: [i for i in filter(lambda x: x>2, [1, 2, 3])]
Out[7]: [3]
示例
1. 去掉列表中为空的元素
In [6]: ['a', 'b', 'c', '']
Out[6]: ['a', 'b', 'c', '']
In [7]: lst = ['a', 'b', 'c', '']
In [8]: filter(None, lst)
Out[8]: <filter at 0x7f5f11f1b320>
In [9]: list(filter(None, lst))
Out[9]: ['a', 'b', 'c']
注意
二次遍历为空的问题
注意filter返回的是一个迭代器对象,当遍历过迭代器对象后,就再也无法获取到它的值了
In [19]: lst2 = filter(None, lst)
In [20]: for i in lst2:
...: print(i)
...:
...:
a
b
c
In [21]: for i in lst2:
...: print(i)
...:
...:
所以如果多次使用数据的话,最好还是转换成list
In [22]: lst2 = list(filter(None, lst))
In [23]: for i in lst2:
...: print(i)
...:
...:
a
b
c
In [24]: for i in lst2:
...: print(i)
...:
...:
a
b
c