Slice
The slice operation selects a subset of values from a parent state, similar to Python list slicing.
Using Index Notation
The most convenient way is Python’s slice syntax:
from statetracker import Manager, State
with Manager():
A = State(num_values=10, name="A")
B = A[2:5] # Values 2, 3, 4
C = A[::2] # Even values: 0, 2, 4, 6, 8
D = A[::-1] # Reversed: 9, 8, 7, ..., 0
E = A[3] # Single value: 3
print(f"B (A[2:5]) has {B.num_values} values")
print(f"C (A[::2]) has {C.num_values} values")
print(f"D (A[::-1]) has {D.num_values} values")
print(f"E (A[3]) has {E.num_values} values")
B (A[2:5]) has 3 values
C (A[::2]) has 5 values
D (A[::-1]) has 10 values
E (A[3]) has 1 values
Using slice()
The slice() function provides the same functionality:
from statetracker import slice
with Manager():
A = State(num_values=10, name="A")
B = slice(A, start=2, stop=5) # Values 2, 3, 4
C = slice(A, step=2) # Even values
print(f"B has {B.num_values} values")
print(f"C has {C.num_values} values")
B has 3 values
C has 5 values