Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Sliding-Window-Iteration in Python effizient implementieren?

Wie kann ich die Sliding-Window-Iteration in Python effizient implementieren?

DDD
DDDOriginal
2024-12-29 02:37:09230Durchsuche

How Can I Efficiently Implement Sliding Window Iteration in Python?

Sliding-Window-Iterationstechniken

Für die Sliding-Window-Iteration über eine Iteration kann eine Basisimplementierung List-Slicing und Iteration verwenden:

def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for cnt in range(window_size)]  # First window
    yield win
    for e in it:  # Subsequent windows
        win[:-1] = win[1:]
        win[-1] = e
        yield win

Effizient und elegant Lösungen

Für mehr Effizienz und Eleganz kann ein Generatorausdruck mit itertools verwendet werden:

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

Für einfachere Iterables wie Listen oder Tupel kann ein unkomplizierter Ansatz mit Bereich und Indizierung verwendet werden 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])

Das obige ist der detaillierte Inhalt vonWie kann ich die Sliding-Window-Iteration in Python effizient implementieren?. 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