Dies beantwortet, was das OP hätte fragen sollen , dh eine Liste durchlaufen, in der aufeinanderfolgende Elemente verglichen werden (ausgezeichnete SilentGhost- Antwort), die jedoch für jede Gruppe ( n-Gramm ) verallgemeinert ist : 2, 3, ... n:
zip(*(l[start:] for start in range(0, n)))
Beispiele:
l = range(0, 4) # [0, 1, 2, 3]
list(zip(*(l[start:] for start in range(0, 2)))) # == [(0, 1), (1, 2), (2, 3)]
list(zip(*(l[start:] for start in range(0, 3)))) # == [(0, 1, 2), (1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 4)))) # == [(0, 1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 5)))) # == []
Erklärungen:
l[start:] generiert eine Liste / einen Generator ausgehend vom Index start
*listoder *generator: Übergibt alle Elemente an die umschließende Funktion, zipals ob sie geschrieben worden wärezip(elem1, elem2, ...)
Hinweis:
AFAIK, dieser Code ist so faul wie möglich. Nicht getestet.