Sets
The galactic.algebras.set
module defines several set classes.
FiniteUniverse
for creating finite universe;FiniteSubSet
for creating subset of finite universe;FIFOSet
for creating FIFOSet;IterableSet
which is a mixin class for iterable sets;FIFOSetFactory
for giving the ability to create sets for set operations.
- class FIFOSet(*args: Iterable[galactic.algebras.set._fifo._T])
The
FIFOSet
is a kind of set that remembers the order of its entries.Examples
>>> from galactic.algebras.set import FIFOSet >>> a = FIFOSet[int]([3, 5, 1, 2, 6, 2]) >>> list(a) [3, 5, 1, 2, 6] >>> list(a | FIFOSet[int]([1, 5, 7 ,8, 9])) [3, 5, 1, 2, 6, 7, 8, 9]
- __init__(*args: Iterable[galactic.algebras.set._fifo._T]) None
Initialise a
FIFOSet
instance.The initializer can take 0 or 1 argument that should be iterable.
- discard(value: galactic.algebras.set._fifo._T) None
Discard
value
from the set if it is present.- Parameters:
value (
_T
) – The value to remove.
- isdisjoint(other)
Return True if two sets have a null intersection.
- move_to_end(value: galactic.algebras.set._fifo._T, last: bool = True) None
Move an existing
value
to either end of aFIFOSet
.The value is moved to the right end if
last
isTrue
(the default) or to the beginning iflast
isFalse
.
- pop(last: bool = False) galactic.algebras.set._fifo._T
Remove and return an existing value from either end of a
FIFOSet
.
- class FIFOSetFactory(*args, **kwds)
The
FIFOSetFactory
class provides a_from_iterable()
class methods.This method is used by builtin set classes when set operations are executed.
Notes
See https://docs.python.org/fr/3/library/collections.abc.html.
- class IterableSet(*args, **kwds)
The
IterableSet
class implements some basic operations.This allow sub-classes to only implement the
__iter__()
method.- isdisjoint(other)
Return True if two sets have a null intersection.
- class FiniteSubSet(universe: galactic.algebras.set.FiniteUniverse[galactic.algebras.set._finite._T], iterable: Optional[Iterable[galactic.algebras.set._finite._T]] = None)
The
FiniteSubSet
class represents subsets of a finite universe.Instances stores membership using a compact array of intervals represented by an array of int. For example, using the
abcdef
universe, theabde
subset will be represented by[0,2,3,5]
meaning:from element
0
(included) to element2
(excluded) of universefrom element
3
(included) to element5
(excluded) of universe
Examples
>>> from galactic.algebras.set import FiniteUniverse, FiniteSubSet >>> universe = FiniteUniverse[str]("abcdef") >>> subset1 = FiniteSubSet[str](universe, "abde") >>> list(subset1.universe) ['a', 'b', 'c', 'd', 'e', 'f'] >>> len(subset1) 4 >>> "a" in subset1 True >>> "f" in subset1 False >>> list(~subset1) ['c', 'f'] >>> subset2 = FiniteSubSet[str](universe, "bdef") >>> list(subset1 | subset2) ['a', 'b', 'd', 'e', 'f'] >>> list(subset1 & subset2) ['b', 'd', 'e'] >>> list(subset1 ^ subset2) ['a', 'f'] >>> subset1 & subset2 <= subset1 True >>> subset1 | subset2 >= subset1 True >>> subset1.isdisjoint(subset2) False
- __init__(universe: galactic.algebras.set.FiniteUniverse[galactic.algebras.set._finite._T], iterable: Optional[Iterable[galactic.algebras.set._finite._T]] = None) None
Initialise a
FiniteSubSet
instance.- Parameters:
universe (
FiniteUniverse[_T]
) – A finite universe.- Keyword Arguments:
iterable (
Iterable[_T]
, optional) – An optional iterable of values.
- property universe: galactic.algebras.set.FiniteUniverse[galactic.algebras.set._finite._T]
Get the underlying universe.
- Returns:
The underlying universe.
- Return type:
- class FiniteUniverse(iterable: Iterable[galactic.algebras.set._finite._T])
The
FiniteUniverse
class is used to represent finite universe.Examples
>>> from galactic.algebras.set import FiniteUniverse >>> universe = FiniteUniverse[str]("abcdef") >>> list(universe) ['a', 'b', 'c', 'd', 'e', 'f'] >>> list(reversed(universe)) ['f', 'e', 'd', 'c', 'b', 'a'] >>> universe.index('c') 2 >>> universe.count('c') 1 >>> universe.count('g') 0
- __init__(iterable: Iterable[galactic.algebras.set._finite._T]) None
Initialise a
FiniteUniverse
instance.- Parameters:
iterable (
Iterable[_T]
) – An iterable of hashable values.
- count(value: Any) int
Get the total number of occurrences of value.
- Parameters:
value (Any) – The value whose count is requested.
- Returns:
1 if the value is in the universe, else 0.
- Return type:
- index(value: Any, start: Optional[int] = None, stop: Optional[int] = None) int
Get the index of a value.
- Parameters:
value (_T) – The value whose index is requested.
- Keyword Arguments:
- Raises:
TypeError – If the value is not hashable.
ValueError – If the value is not in the universe or not found in the interval.
- isdisjoint(other)
Return True if two sets have a null intersection.