RxPY - 数学运算符
平均值 (average)
此运算符将计算给定源 Observable 的平均值,并输出一个包含平均值的 Observable。
语法
average()
返回值
它返回一个包含平均值的 Observable。
示例
from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
op.average()
)
sub1.subscribe(lambda x: print("Average is {0}".format(x)))
输出
E:\pyrx>python testrx.py Average is 5.5
连接 (concat)
此运算符将接收两个或多个 Observable,并返回一个包含所有值的单个 Observable。
语法
concat(observable1, observable2...)
参数
Observables:要连接的 Observable 列表。
返回值
返回一个 Observable,其中包含从源 Observable 值合并的单个值。
示例
testrx.py
from rx import of, operators as op
test = of(2, 4, 6, 8, 10)
test2 = of(3,6,9,12,15)
sub1 = test.pipe(
op.concat(test2)
)
sub1.subscribe(lambda x: print("Final value is {0}".format(x)))
输出
E:\pyrx>python testrx.py Final value is 2 Final value is 4 Final value is 6 Final value is 8 Final value is 10 Final value is 3 Final value is 6 Final value is 9 Final value is 12 Final value is 15
计数 (count)
此运算符接收一个包含值的 Observable,并将其转换为一个包含单个值的 Observable。count 函数可选择接受一个谓词函数作为参数。该函数的类型为布尔值,只有在满足条件时,才会将值添加到输出。
语法
count(predicate_function=None)
参数
count 函数可选择接受一个谓词函数作为参数。该函数的类型为布尔值,只有在满足条件时,才会将值添加到输出。
返回值
它将返回一个包含单个值的 Observable,即源 Observable 的计数。
示例 1
from rx import of, operators as op
test = of(1,2,3, 4,5, 6,7, 8,9, 10)
sub1 = test.pipe(
op.count()
)
sub1.subscribe(lambda x: print("The count is {0}".format(x)))
输出
E:\pyrx>python testrx.py The count is 10
示例 2:使用谓词函数
from rx import of, operators as op
test = of(1,2,3, 4,5, 6,7, 8,9, 10)
sub1 = test.pipe(
op.count(lambda x : x %2 == 0)
)
sub1.subscribe(lambda x: print("The count of even numbers is {0}".format(x)))
输出
E:\pyrx>python testrx.py The count of even numbers is 5
最大值 (max)
此运算符将返回一个包含源 Observable 中最大值的 Observable。
语法
max(comparer_function=None)
参数
comparer_function:可选参数。此函数用于比较源 Observable 中的值。
返回值
它返回一个包含源 Observable 中最大值的 Observable。
示例 1
from rx import of, operators as op
test = of(12,32,41,50,280,250)
sub1 = test.pipe(
op.max()
)
sub1.subscribe(lambda x: print("Max value is {0}".format(x)))
输出
E:\pyrx>python testrx.py Max value is 280
示例 2:comparer_function
from rx import of, operators as op
test = of(12,32,41,50,280,250)
sub1 = test.pipe(
op.max(lambda a, b : a - b)
)
sub1.subscribe(lambda x: print("Max value is {0}".format(x)))
输出
E:\pyrx>python testrx.py Max value is 280
最小值 (min)
此运算符将返回一个包含源 Observable 中最小值的 Observable。
语法
min(comparer_function=None)
参数
comparer_function:可选参数。此函数用于比较源 Observable 中的值。
返回值
它返回一个包含源 Observable 中最小值的 Observable。
示例 1
from rx import of, operators as op
test = of(12,32,41,50,280,250)
sub1 = test.pipe(
op.min()
)
sub1.subscribe(lambda x: print("Min value is {0}".format(x)))
输出
E:\pyrx>python testrx.py Min value is 12
示例 2:使用 comparer_function
from rx import of, operators as op
test = of(12,32,41,50,280,250)
sub1 = test.pipe(
op.min(lambda a, b : a - b)
)
sub1.subscribe(lambda x: print("Min value is {0}".format(x)))
输出
E:\pyrx>python testrx.py Min value is 12
规约 (reduce)
此运算符接收一个名为 accumulator 函数的函数,该函数用于处理来自源 Observable 的值,并以 Observable 的形式返回累加值,并可以选择向 accumulator 函数传递种子值。语法
reduce(accumulator_func, seed=notset)
参数
accumulator_func:用于处理来自源 Observable 的值的函数,它以 Observable 的形式返回累加值。
seed:可选。默认值未设置。它是 accumulator 函数中使用的初始值。
返回值
它返回一个 Observable,其输出值为应用于源 Observable 的每个值的 accumulator 函数的单个值。
示例
from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
op.reduce(lambda acc, x: acc + x)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))
输出
E:\pyrx>python testrx.py The value is 55
求和 (sum)
此运算符将返回一个包含来自源 Observable 所有值之和的 Observable。
语法
sum(key_mapper=none)
参数
key_mapper:可选。这是应用于来自源 Observable 的值的函数。
返回值
它返回一个包含来自源 Observable 所有值之和的 Observable。
示例 1
from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
op.sum()
)
sub1.subscribe(lambda x: print("The sum is {0}".format(x)))
输出
E:\pyrx>python testrx.py The sum is 55
示例 2:使用 key_mapper 函数
from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
op.sum(lambda a: a+1)
)
sub1.subscribe(lambda x: print("The sum is {0}".format(x)))
使用 key_mapper 函数,我们将所有值加 1 并求和。
E:\pyrx>python testrx.py The sum is 65