Extended sets - support for set complement
An eset
works like a normal python set
except that you can invert it to generate its
complement. For example, let's say you have the following:
>>> from esets import eset
>>> s = eset(['hello', 'there'])
>>> s_invert = ~s
>>> s_invert
~eset(['hello', 'there'])
In this example, s_invert
contains everything except 'hello'
and 'there'
.
All the logic operations you'd expect from sets are available in esets, including
intersection, union, difference, and symmetric difference. Use the &
, |
, -
, and ^
operators respectively.
Similarly, conditional expressions are available to determine subset relationships.
If A <= B
, that A is a subset of B.
You'll note there's an inf.py
module that implement א0
and א1
infinities, that
is, countable and uncountable infinities. This was implemented so that cardinality
calculations would be correct for complement sets: discussed below.
>>> from esets import inf
>>> inf.countable, inf.uncountable
(א0, א1)
>>> inf.countable < inf.uncountable
True
The abs
expression (also cardinality
method) will return a countably infinite scalar
if in complement mode; otherwise it returns the count of items in set.
>>> from esets import eset, inf
>>> s = eset(['hello', 'there'])
>>> abs(s)
2
>>> abs(~s)
א0