Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich einen Schiebefenster-Iterator in Python erstellen?

Wie kann ich einen Schiebefenster-Iterator in Python erstellen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 09:33:10626Durchsuche

How Can I Create a Sliding Window Iterator in Python?

Schiebefenster-Iteratoren in Python

Bei der Arbeit mit Streaming-Daten oder sequenzieller Verarbeitung kann ein Roll- oder Schiebefenster-Iterator für die Untersuchung von unschätzbarem Wert sein Stream von Elementen in einem definierten Fenster.

In Python können Sie mithilfe der integrierten Funktion einen Schiebefenster-Iterator erstellen itertools-Modul. Die Funktion window() aus einer älteren Version der Python-Dokumentation bietet eine prägnante und effiziente Implementierung:

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

Alternativ kann für eine einfache Liste oder ein Tupel ein unkomplizierter Ansatz verwendet werden:

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])

In beiden Fällen gleitet das Fenster durch die Sequenz und erzeugt überlappende Fenster einer bestimmten Größe, sodass Daten einfach analysiert und auf überschaubare Weise verarbeitet werden können.

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

Stellungnahme:
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