Python Built-in Functions {内置函数} filter{function, iterable}
Built-in Functions
https://docs.python.org/3/library/functions.html
内置函数
https://docs.python.org/zh-cn/3/library/functions.html
Construct an iterator from those elements of iterable
for which function
returns true. iterable
may be either a sequence, a container which supports iteration, or an iterator. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.
用 iterable
中函数 function
返回真的那些元素,构建一个新的迭代器。iterable
可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function
是 None
,则会假设它是一个身份函数,即 iterable
中所有返回假的元素会被移除。
Note that filter(function, iterable)
is equivalent to the generator expression (item for item in iterable if function(item))
if function is not None
and (item for item in iterable if item)
if function is None
.
请注意,filter(function, iterable)
相当于一个生成器表达式,当 function
不是 None
的时候为 (item for item in iterable if function(item))
,function
是 None
的时候为 (item for item in iterable if item)
。
See itertools.filterfalse()
for the complementary function that returns elements of iterable for which function returns false.
请参阅 itertools.filterfalse()
了解,只有 function
返回 false
时才选取 iterable
中元素的补充函数。
1. Python 2.x
filter()
函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True
或 False
,最后将返回 True
的元素放到新列表中。
Pyhton 2.7 返回列表,Python 3.x 返回迭代器对象。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
def is_odd(n):
return n % 2 == 1
list_filter = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list_filter)
/usr/bin/python2.7 /home/strong/tensorflow_work/R2CNN_Faster-RCNN_Tensorflow/yongqiang.py
[1, 3, 5, 7, 9]
Process finished with exit code 0
2. Python 3.x
filter()
函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。如果要转换为列表,可以使用 list()
来转换。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True
或 False
,最后将返回 True
的元素放到新列表中。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
def is_odd(n):
return n % 2 == 1
filter_data = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("filter_data", filter_data)
list_filter = list(filter_data)
print("list_filter", list_filter)
/usr/bin/python3.5 /home/strong/tensorflow_work/R2CNN_Faster-RCNN_Tensorflow/yongqiang.py
filter_data <filter object at 0x7f6350b2ccf8>
list_filter [1, 3, 5, 7, 9]
Process finished with exit code 0
3. filter()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
filter_data = filter(lambda x: x % 2, range(10))
print("filter_data", filter_data)
print("list(filter_data)", list(filter_data))
/usr/bin/python3.5 /home/strong/tensorflow_work/R2CNN_Faster-RCNN_Tensorflow/yongqiang.py
filter_data <filter object at 0x7f7a3e3d1c18>
list(filter_data) [1, 3, 5, 7, 9]
Process finished with exit code 0
4. filter()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
fn = [1, 2, 3, 4, 5, 6, 7]
filter_data = filter(lambda x: x > 5, fn)
print("filter_data", filter_data)
print("list(filter_data)", list(filter_data))
/usr/bin/python3.5 /home/strong/tensorflow_work/R2CNN_Faster-RCNN_Tensorflow/yongqiang.py
filter_data <filter object at 0x7f719c1c5cc0>
list(filter_data) [6, 7]
Process finished with exit code 0
5. 字符串长度过滤
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
name_data = ["CHENG", "YONG", "QIANG"]
filter_name_data = list(filter(lambda x: len(x) < 5, name_data))
print("name_data", name_data)
print("filter_name_data", filter_name_data)
/usr/bin/python3.5 /home/strong/tensorflow_work/R2CNN_Faster-RCNN_Tensorflow/yongqiang.py
name_data ['CHENG', 'YONG', 'QIANG']
filter_name_data ['YONG']
Process finished with exit code 0
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/