cycler.Cycler¶
-
class
cycler.
Cycler
(left, right=None, op=None)¶ Composable cycles
This class has compositions methods:
+
- for ‘inner’ products (zip)
+=
- in-place
+
*
- for outer products (itertools.product) and integer multiplication
*=
- in-place
*
and supports basic slicing via
[]
Parameters: - left : Cycler or None
The ‘left’ cycler
- right : Cycler or None
The ‘right’ cycler
- op : func or None
Function which composes the ‘left’ and ‘right’ cyclers.
-
__init__
(self, left, right=None, op=None)¶ Semi-private init
Do not use this directly, use
cycler
function instead.
Methods
__init__
(self, left[, right, op])Semi-private init by_key
(self)Values by key change_key
(self, old, new)Change a key in this cycler to a new name. concat
(self, other)Concatenate this cycler and an other. simplify
(self)Simplify the Cycler Attributes
keys
The keys this Cycler knows about -
by_key
(self)¶ Values by key
This returns the transposed values of the cycler. Iterating over a
Cycler
yields dicts with a single value for each key, this method returns adict
oflist
which are the values for the given key.The returned value can be used to create an equivalent
Cycler
using only+
.Returns: - transpose : dict
dict of lists of the values for each key.
-
change_key
(self, old, new)¶ Change a key in this cycler to a new name. Modification is performed in-place.
Does nothing if the old key is the same as the new key. Raises a ValueError if the new key is already a key. Raises a KeyError if the old key isn’t a key.
-
concat
(self, other)¶ Concatenate this cycler and an other.
The keys must match exactly.
This returns a single Cycler which is equivalent to
itertools.chain(self, other)
Parameters: Returns: Examples
>>> num = cycler('a', range(3)) >>> let = cycler('a', 'abc') >>> num.concat(let) cycler('a', [0, 1, 2, 'a', 'b', 'c'])
-
keys
¶ The keys this Cycler knows about
-
simplify
(self)¶ Simplify the Cycler
Returned as a composition using only sums (no multiplications)
Returns: - simple : Cycler
An equivalent cycler using only summation