On 08/10 12:20, haael wrote:
Forgive me if this has already been discussed.
Could we add the idea of "negative" sets to Python? That means sets that contain EVERYTHING EXCEPT certain elements.
First, let's have a universal set that contains everything.
assert element in set.UNIVERSAL
The universal set is a superset of every other set.
assert set.UNIVERSAL >= any_set
Adding anything to universal set doesn't change anything.
assert set.UNIVERSAL | element == set.UNIVERSAL
However REMOVING an element from the set puts it on "negative list".
myset = set.UNIVERSAL myset.remove(element) assert element not in myset
Intersection of a "negative set" with a normal set gives again a normal set. Union of two negative sets, or a negative set with a normal set, gives a negative set.
The main issue: negative sets would not be iterable, but you can intersect them with the desired subdomain and iterate over. _______________________________________________ Python-ideas mailing list -- firstname.lastname@example.org To unsubscribe send an email to email@example.com https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://firstname.lastname@example.org/message/MY77JS... Code of Conduct: http://python.org/psf/codeofconduct/
Aside from the amusing thought experiments (that I admin I enjoy), isn't this the same as:
removed = set() assrt element in removed # False, as in it has not yet been "removed from the universal" set removed.add(element) assrt element not in removed # False, as it has been already "removed from the universal" set
If so, it should be relatively easy (as Joao says in some other reply) to implement a class that behaves that way.