Ich möchte einen beliebig komplexen Bereich realer Werte darstellen, der diskontinuierlich sein kann, d. h.:
%Vor%Wo ich neue Bereiche inkrementell hinzufügen werde:
%Vor%Ich kenne nicht die richtige Sprache, um das zu beschreiben, also habe ich Schwierigkeiten, zu suchen, aber es scheint, als ob eine Klasse wahrscheinlich bereits existiert, um das zu tun, was ich tun möchte. Geht es?
Es gibt mindestens ein paar Pakete im Python Package Index, die sich mit Intervallen befassen:
Ich habe vorher mit interval
experimentiert und festgestellt, dass es gut geschrieben und dokumentiert ist (im Moment scheint seine Website nicht verfügbar zu sein). Ich habe pyinterval
nicht verwendet.
Zusätzlich zu den von Ned erwähnten Intervall und pyinterval Paketen gibt es auch pyinter .
Da pyinterval nicht auf meinem Computer kompiliert wurde, habe ich nur mit Intervall und pyinter gespielt.
Ersteres scheint mir besser zu sein, weil es Additions- und Subtraktionsoperatoren für Intervallmengen definiert hat, die pyinter nicht hat. Auch wenn ich versuchte, die Vereinigung von zwei diskreten Punkten zu berechnen, funktionierte es wie erwartet im Intervall , aber erhöhte AttributeError ("'int' object has no attribute 'overlaps'")
in pyinter .
Ein sehr sichtbarer Unterschied von pyinter war die Funktion __repr__
der Intervallklasse, die (7,9]
anstelle von Interval(7, 9, lower_closed=False, upper_closed=True)
ausgeben würde (letzteres ist die Darstellung des Intervalls) Paket). Während dies für schnelle interaktive Arbeit nützlich ist, können geschlossene Intervalle mit Listen aus zwei Elementen konfundiert werden. Hier gefällt mir auch der Ansatz des Intervalls -Pakets: Es hat eine weniger zweideutige Darstellung, definiert aber zusätzlich eine __str__
-Methode, so dass beim Aufruf von str()
oder print()
im Beispielintervall würde als (7..9]
ausgeben.
Tags und Links python