Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich einen Rolling- oder Sliding-Window-Iterator in Python effizient implementieren?

Wie kann ich einen Rolling- oder Sliding-Window-Iterator in Python effizient implementieren?

Patricia Arquette
Freigeben: 2024-12-17 22:21:23
Original
950 Leute haben es durchsucht

How Can I Efficiently Implement a Rolling or Sliding Window Iterator in Python?

Rollende oder gleitende Fenster-Iteratoren

Rollende oder gleitende Fenster-Iteratoren ermöglichen das Durchlaufen einer Sequenz in überlappenden Fenstern einer bestimmten Größe. Das Iterieren über eine Sequenz mit einer Fenstergröße von 1 ist im Wesentlichen die Standard-Python-Iteration.

Effiziente und elegante Implementierung

Die folgende Implementierung aus der Python-Dokumentation nutzt das itertools-Modul für mehr Effizienz:

from itertools import islice

def window(seq, n=2):
    """Returns a sliding window (of width n) over data from the iterable"""
    "s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ..."
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result
Nach dem Login kopieren

Implementation for Simple Iterables

Für Iterables, die als einfache Listen oder Tupel dargestellt werden, besteht ein einfacher Ansatz darin, das Iterable mit der angegebenen Fenstergröße zu durchlaufen:

seq = [0, 1, 2, 3, 4, 5]
window_size = 3

for i in range(len(seq) - window_size + 1):
    print(seq[i: i + window_size])
Nach dem Login kopieren

Ausgabe:

[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich einen Rolling- oder Sliding-Window-Iterator in Python effizient implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage