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

results matching ""

    No results matching ""