Ich möchte gerne einen einfachen Wrapper für den Python list
-Typ schreiben, der ihn zwingt, bei 1
anstatt bei 0
zu indizieren. Ich habe ein ziemlich komplexes Programm, das auf einigen diskreten Wahrscheinlichkeitsverteilungen von Dauerdaten basiert, mit Eimerlängen ganzer Zahlen, aber ich habe keine Dauern von weniger als 1. Wie auch immer, es würde einige signifikante Teile meines Codes erheblich vereinfachen, nahtlos bei 1 zu beginnen. Zuerst habe ich einen dict
verwendet, aber ich fand einige Eigenschaften von ihnen zu umständlich.
I've never written a wrapper for a Python class before, much less a built-in type, but I feel like what I want to do is fairly simple. At the bare minimum, I should be able to do stuff like this:
>>> p = one_list([1,2,3,4,5])
>>> for i in range(1,6):
print i, p[i]
1 1
2 2
3 3
4 4
5 5
>>> len(p)
5
Allerdings wäre es gut, wenn ich auch einige der anderen relevanten eingebauten Methoden der list
-Klasse überschreiben könnte, wie z.B. index
.
>>> len(p)
5
>>> p.index(p[-1])
5
Bitte teilen Sie Ihre Tipps, wie ich so etwas machen könnte. Ich überlege, ob ich es einfach mit einer benutzerdefinierten Klasse machen soll, aber das scheint mir übertrieben zu sein. Ich freue mich auch über Empfehlungen für nützliche Methoden zum Überschreiben.
Bearbeitung: Nachwort
Ich möchte nur darauf hinweisen, dass es nicht die Mühe wert war, das zu tun, und der Grund, warum ich die untenstehende Antwort akzeptiert habe, ist nicht, weil ich versucht habe, es auf die von ihm beschriebene Weise zu implementieren, sondern weil er mir geholfen hat zu erkennen, dass Listen an sich gut genug sind.