MutableIntervalSet¶
-
class
part.MutableIntervalSet(iterable=None)¶ Mutable Interval Set class.
The
MutableIntervalSetclass (which inherits from theIntervalSetclass) is designed to hold mutable disjoint sorted intervals.Note
Les \(n\) (or \(n_0\)) the number of intervals of the self variable and \(m\) the number of intervals in the other variable. Let \(n_1, ... n_k\) the number of intervals for methods with multiple arguments.
The complexity in time of methods is:
Methods
Average case
__getitem__()\(O(\log(n))\) \(O(n)\)
\(O(\log^2(n)+\log^2(m)))\)
\(O(\log^2(n)+\log^2(m)))\)
\(O(\log^2(n)+\log^2(m)))\)
\(O(\log^2(n)+\log^2(m)))\)
\(O(\sum_{i=0}^k\log^2(n_i))\)
\(O(\sum_{i=0}^k\log^2(n_i))\)
\(O(\sum_{i=0}^k\log^2(n_i))\)
\(O(\sum_{i=0}^k\log^2(n_i))\)
\(O(\log(n))\)
\(O(\log(n))\)
\(O(\log(n))\)
\(O(\log(n))\)
\(O(1)\)
Methods
Worst Case (when different of average case)
\(O(m\log(m)+n\log(n))\)
\(O(m\log(m)+n\log(n))\)
\(O(m\log(m)+n\log(n))\)
\(O(m\log(m)+n\log(n))\)
\(O(\sum_{i=0}^k n_i\log(n_i))\)
\(O(\sum_{i=0}^k n_i\log(n_i))\)
\(O(\sum_{i=0}^k n_i\log(n_i))\)
\(O(\sum_{i=0}^k n_i\log(n_i))\)
-
__init__(iterable=None)¶ Initialize a
MutableIntervalSetinstance.- Parameters
iterable (
Iterable) –An optional iterable of either
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13]
-
__ior__(other)¶ Update self with the union other.
- Parameters
other (
IntervalSet) – Another interval set.- Returns
The updated
MutableIntervalSet.- Return type
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> b = MutableIntervalSet([(0, 7), (8, 12)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> print(b) [0;7) | [8;12) >>> a |= b >>> print(a) [0;7) | [8;13]
-
__iand__(other)¶ Update self with the intersection with other.
- Parameters
other (
IntervalSet) – Another interval set.- Returns
The updated
MutableIntervalSet.- Return type
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> b = MutableIntervalSet([(0, 7), (8, 12)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> print(b) [0;7) | [8;12) >>> a &= b >>> print(a) [2;2] | [6;7) | (8;10) | [11;12)
-
__isub__(other)¶ Update self with the difference with other.
- Parameters
other (
IntervalSet) – Another interval set.- Returns
The updated
MutableIntervalSet.- Return type
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> b = MutableIntervalSet([(0, 7), (8, 12)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> print(b) [0;7) | [8;12) >>> a -= b >>> print(a) [12;13]
-
__ixor__(other)¶ Update self with the symmetric difference with other.
- Parameters
other (
IntervalSet) – Another interval set.- Returns
The updated
MutableIntervalSet.- Return type
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> b = MutableIntervalSet([(0, 7), (8, 12)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> print(b) [0;7) | [8;12) >>> a ^= b >>> print(a) [0;2) | (2;6) | [8;8] | [10;11) | [12;13]
-
update(*args)¶ Update the set, keeping only elements found in it and all others.
- Parameters
*args (
Iterable[IntervalValue]) – An iterable ofAtomicor valid tuple for an interval creation.- Raises
TypeError – if an argument is not iterable.
-
intersection_update(*args)¶ Update the set, keeping only elements found in it and all others.
- Parameters
*args (
Iterable[IntervalValue]) – An iterable ofAtomicor valid tuple for an interval creation.- Raises
TypeError – if an argument is not iterable.
-
difference_update(*args)¶ Update the set, removing elements found in others.
- Parameters
*args (
Iterable[IntervalValue]) – An iterable ofAtomicor valid tuple for an interval creation.- Raises
TypeError – if an argument is not iterable.
-
symmetric_difference_update(other)¶ Update the set, keeping only elements found in either set, but not in both.
- Parameters
other (
Iterable[IntervalValue]) – An iterable ofAtomicor valid tuple for an interval creation.- Raises
TypeError – if other is not iterable.
-
add(value)¶ Add element value to the set.
- Parameters
value (
IntervalValue) –The value to add:
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> a.add((2, 6)) >>> print(a) [2;7) | (8;10) | [11;13]
-
remove(value)¶ Remove element value from the set.
- Parameters
value (
IntervalValue) –The value to remove:
- Raises
KeyError – if value is not contained in the set.
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> try: ... a.remove((2, 8)) ... except KeyError as e: ... print(e) '(2, 8)'
-
discard(value)¶ Discard element value from the set.
- Parameters
value (
IntervalValue) –The value to discard:
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> a.discard((2, 8)) >>> print(a) (8;10) | [11;13]
-
pop()¶ Get the first interval.
- Returns
The first interval.
- Return type
- Raises
KeyError – if the set is empty.
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> print(a.pop()) [2;2] >>> print(a) [6;7) | (8;10) | [11;13]
-
clear()¶ Remove all elements from the set.
Examples
>>> from part import MutableIntervalSet >>> a = MutableIntervalSet([2, (6, 7), (8, 10, None), (11, 13, True, True)]) >>> print(a) [2;2] | [6;7) | (8;10) | [11;13] >>> a.clear() >>> print(a)
-