RxPY - Transformation Operators



buffer

This operator will collect all the values, from the source observable and emit them at regular intervals once the given boundary condition is satisfied.

Syntax

buffer(boundaries)

Parameters

boundaries: The input is observable that will decide when to stop so that the collected values are emitted.

Return value

The return value is observable, that will have all the values collected from source observable based and that is time duration is decided by the input observable taken.

Example

from rx import of, interval, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
   op.buffer(interval(1.0))
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))

Output

E:\pyrx>python test1.py
The elements are [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ground_by

This operator will group the values coming from the source observable based on the key_mapper function given.

Syntax

group_by(key_mapper)

Parameters

key_mapper: This function will take care of extracting keys from the source observable.

Return value

It returns an observable with values grouped based on the key_mapper function.

Example

from rx import from_, interval, operators as op
test = from_(["A", "B", "C", "D"])
sub1 = test.pipe(
   op.group_by(lambda v: v[0])
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))

Output

E:\pyrx>python testrx.py
The element is <rx.core.observable.groupedobservable.GroupedObservable object
at
 0x000000C99A2E6550>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
 0x000000C99A2E65C0>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
 0x000000C99A2E6588>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
 0x000000C99A2E6550>

map

This operator will change each value from the source observable into a new value based on the output of the mapper_func given.

Syntax

map(mapper_func:None)

Parameters

mapper_func: (optional) It will change the values from the source observable based on the output coming from this function.

Example

from rx import of, interval, operators as op
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
   op.map(lambda x :x*x)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))

Output

E:\pyrx>python testrx.py
The element is 1
The element is 4
The element is 9
The element is 16
The element is 25
The element is 36
The element is 49
The element is 64
The element is 81
The element is 100

scan

This operator will apply an accumulator function to the values coming from the source observable and return an observable with new values.

Syntax

scan(accumulator_func, seed=NotSet)

Parameters

accumulator_func: This function is applied to all the values from the source observable.

seed:(optional) The initial value to be used inside the accumular_func.

Return value

This operator will return an observable that will have new values based on the accumulator function applied on each value of the source observable.

Example

from rx import of, interval, operators as op
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
   op.scan(lambda acc, a: acc + a, 0))
sub1.subscribe(lambda x: print("The element is {0}".format(x)))

Output

E:\pyrx>python testrx.py
The element is 1
The element is 3
The element is 6
The element is 10
The element is 15
The element is 21
The element is 28
The element is 36
The element is 45
The element is 55
Advertisements