Zugriff auf aufeinanderfolgende Elemente bei Verwendung eines Generators

Nehmen wir an, ich habe einen Tupelgenerator, den ich folgendermaßen simuliere:

g = (x for x in (1,2,3,97,98,99))

Für diesen speziellen Generator möchte ich eine Funktion schreiben, um Folgendes auszugeben:

(1,2,3)
(2,3,97)
(3,97,98)
(97,98,99)
(98,99)
(99)

Ich durchlaufe also jeweils drei aufeinanderfolgende Elemente und drucke sie aus, es sei denn, ich nähere mich dem Ende.

Sollte die erste Zeile in meiner Funktion sein:

t = tuple(g)

Mit anderen Worten, es ist am besten, direkt an einem Tupel zu arbeiten, oder es kann vorteilhaft sein, mit einem Generator zu arbeiten. Wenn es möglich ist, dieses Problem mit beiden Methoden anzugehen, geben Sie bitte die Vor- und Nachteile für beide Ansätze an. Wie könnte eine solche Lösung aussehen, wenn es sinnvoll wäre, den Generator-Ansatz zu verwenden?

Folgendes mache ich derzeit:

def f(data, l):
    t = tuple(data)
    for j in range(len(t)):
        print(t[j:j+l])

data = (x for x in (1,2,3,4,5))
f(data,3)

AKTUALISIEREN:

Beachten Sie, dass ich meine Funktion aktualisiert habe, um ein zweites Argument zu verwenden, das die Länge des Fensters angibt.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage