In der Mathematik gibt es Mengen und geordnete Mengen (Osets).
- set : ein ungeordneter Container mit eindeutigen Elementen (implementiert)
- oset : ein geordneter Container mit eindeutigen Elementen (NotImplemented)
In Python werden nur Mengen direkt implementiert. Wir können Osets mit regulären Diktiertasten ( 3.7+ ) emulieren .
Gegeben
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
Code
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
Demo
Replikate werden entfernt, die Einfügereihenfolge bleibt erhalten.
list(oset)
# [1, 2, 20, 6, 210]
Set-ähnliche Operationen an Diktiertasten.
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
Einzelheiten
Hinweis: Eine ungeordnete Struktur schließt geordnete Elemente nicht aus. Vielmehr ist eine aufrechterhaltene Bestellung nicht garantiert. Beispiel:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
Man kann erfreut sein zu entdecken, dass eine Liste und ein Multiset (mset) zwei weitere faszinierende mathematische Datenstrukturen sind:
- Liste : Ein geordneter Container mit Elementen, der Replikate zulässt (implementiert)
- mset : Ein ungeordneter Container mit Elementen, der Replikate zulässt (NotImplemented) *
Zusammenfassung
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* Ein Multiset kann indirekt mit collections.Counter()
einer diktartigen Abbildung von Multiplizitäten (Zählungen) emuliert werden .