RxPY 过滤操作符
debounce
此操作符将从源可观察对象中获取值,直到给定的时间段,并忽略剩余的值(如果时间过去)。
语法
debounce(duetime)
参数
duetime:此值可以是以秒或时间实例表示的持续时间,用于确定从源可观察对象返回的值。
示例
from rx import of, operators as op
from datetime import date
test = of(1,2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.debounce(2.0)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The value is 10
distinct
这个操作符将返回与源 Observable 不重复的所有值。
语法
distinct()
返回值
它将返回一个可观察对象,其中将具有来自源可观察对象的不同值。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.distinct()
)
sub1.subscribe(lambda x: print("The distinct value is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The distinct value is 1
The distinct value is 6
The distinct value is 15
The distinct value is 10
The distinct value is 40
The distinct value is 58
The distinct value is 20
element_at
此运算符将返回给定索引下源可观察对象的元素。
语法
element_at(index)
参数
index: 从零开始计数,表示您需要从源可观察对象中获取的元素的索引。
返回值
它将返回一个具有给定索引的源可观察对象的值的可观察对象。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.element_at(5)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The value is 6
filter
此操作符将根据给定的断言函数从源可观察对象中筛选值。
语法
filter(predicate_func)
参数
predicate_func:这个函数将决定源可观察对象中要被过滤的值。
返回值
它将返回一个可观察对象,该对象基于谓词函数从源可观察对象中获取过滤后的值。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.filter(lambda x : x %2==0)
)
sub1.subscribe(lambda x: print("The filtered value is {0}".format(x)))
在这个示例中,我们过滤了所有的偶数。
输出
E:\pyrx>python testrx.py
The filtered value is 6
The filtered value is 10
The filtered value is 6
The filtered value is 40
The filtered value is 10
The filtered value is 58
The filtered value is 20
The filtered value is 40
first
该运算符将从源可观察对象中获取第一个元素。
语法
first(predicate_func=None)
参数
predicate_func:(可选)此函数将基于条件决定要选取的第一个元素。
返回值
它将返回一个包含来自源可观测对象的第一个值的可观测对象。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.first()
)
sub1.subscribe(lambda x: print("The first element is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The first element is 1
示例2:使用predicate_func
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.first(lambda x : x%2==0)
)
sub1.subscribe(lambda x: print("The first element is {0}".format(x)))
输出
E:\pyrx>python test1.py
The first element is 6
ignore_elements
此操作符将忽略源Observable中的所有值,只会执行complete或error回调函数的调用。
语法
ignore_elements()
返回值
它返回一个 observable,该 observable 将根据源 observable 调用 complete 或 error。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.ignore_elements()
)
sub1.subscribe(lambda x: print("The first element is {0}".format(x)),
lambda e: print("Error : {0}".format(e)),
lambda: print("Job Done!"))
输出
E:\pyrx>python testrx.py
Job Done!
last
该操作符将从源 Observable 中获取最后一个元素。
语法
last(predicate_func=None)
参数
predicate_func:(可选)该函数将根据条件确定要选择的最后一个元素。
返回值
它将返回一个包含源可观察对象的最后一个值的可观察对象。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 6, 15, 1, 10, 6, 40, 10, 58, 20, 40)
sub1 = test.pipe(
op.last()
)
sub1.subscribe(lambda x: print("The last element is {0}".format(x)))
输出
E:\pyrx>python test1.py
The last element is 40
skip
这个操作符将返回一个Observable,它将跳过输入中取出的第一个count项的出现。
语法
skip(count)
参数
count:count 是从源可观测对象中跳过的次数。
返回值
它将返回一个基于给定的 count 跳过值的可观测对象。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.skip(5)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The element is 6
The element is 7
The element is 8
The element is 9
The element is 10
skip_last
该操作符会返回一个Observable,该Observable会跳过作为输入的count项中的最后一个项。
语法
skip_last(count)
参数
count: count是每次从源可观察对象中跳过的项数。
返回值
它将返回一个可观察对象,该对象根据给定的计数跳过值。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.skip_last(5)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The element is 1
The element is 2
The element is 3
The element is 4
The element is 5
take
这个操作符将根据所给的计数,连续按顺序给出源值的列表。
语法
take(count)
参数
count:count是从源observable获取的项目数量。
返回值
它将返回一个observable,根据给定的count以连续的顺序包含值。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.take(5)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The element is 1
The element is 2
The element is 3
The element is 4
The element is 5
take_last
此运算符根据给定的计数,按连续顺序提供源值的列表。
语法
take_last(count)
参数
count: 该参数表示从源可观察对象中获取的项的数量。
返回值
它将返回一个可观察对象,根据给定的数量以连续的顺序返回值。
示例
from rx import of, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.take_last(5)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
输出
E:\pyrx>python testrx.py
The element is 6
The element is 7
The element is 8
The element is 9
The element is 10