Beim Bearbeiten einer Reihe von Python-Listen
int_list[10:2]
Es ist ein slice-Objekt, das tatsächlich an die get- Methode übergeben wird. Wenn Sie jedoch versuchen, eine listenähnliche Klasse selbst zu implementieren, ist es ein Problem, wenn Sie versuchen, dem Slice-Argument zu entsprechen. Es gibt keine Methode, um Slice in eine Spalte mit Indexnummern zu konvertieren.
Es ist schwierig, einen solchen Konvertierungsprozess selbst zu schreiben. Wenn Schritt eine negative Zahl ist / Keine, Start oder Stopp eine negative Zahl ist / Keine, stirbt dies in einem Sturm bedingter Verzweigung.
Es gibt jedoch Methoden, die eine derart mühsame Verarbeitung unauffällig ausführen. Es ist slot.indices ()
. Wenn Sie die Länge der Liste angeben, wird die negative Zahl / Keine entsprechend auf eine geeignete Indexnummer normalisiert. Damit ist es relativ einfach, eine Spalte mit Indexnummern zu erhalten.
def iterate_by_slice(s: slice, length: int):
i, stop, step = s.indices(length)
if step > 0 :
while i < stop:
yield i
i += step
else:
while i > stop:
yield i
i += step
Bitte machen Sie immer mehr listenähnliche Klassen, die für alle nützlich sind.