Python Built-in Functions (内置函数) filter(function, iterable)

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 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 functionNone,则会假设它是一个身份函数,即 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))functionNone 的时候为 (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() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 TrueFalse,最后将返回 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() 来转换。

该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 TrueFalse,最后将返回 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yongqiang Cheng

梦想不是浮躁,而是沉淀和积累。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值