Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Iterator Tetingkap Bergulir dengan Cekap dalam Python?

Bagaimana untuk Mencipta Iterator Tetingkap Bergulir dengan Cekap dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-12-26 11:49:09222semak imbas

How to Efficiently Create a Rolling Window Iterator in Python?

Iterators Tetingkap Berguling: Pelaksanaan Python

Membalas data dalam fesyen tetingkap gulung (atau tetingkap gelongsor) terbukti sangat berguna dalam pelbagai data analisis dan aplikasi pembelajaran mesin. Soalan ini mempamerkan teknik untuk mencipta lelaran tetingkap bergulir untuk jujukan atau lelaran tertentu dalam Python.

Pelaksanaan Python utama yang disediakan adalah seperti berikut:

def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for _ in range(window_size)]
    yield win
    for e in it:
        win = win[1:] + (e,)
        yield win

Pendekatan ini berulang melalui jujukan , mencipta tetingkap awal, dan kemudian mengemas kini tetingkap dalam lelaran berikutnya. Walau bagaimanapun, sesetengah peminat Python mencadangkan kaedah alternatif untuk keanggunan dan kecekapan yang lebih besar.

Salah satu cadangan sedemikian melibatkan penggunaan modul itertools:

from itertools import islice

def window(seq, n=2):
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result

Kaedah ini memanfaatkan modul itertools yang berkuasa untuk melaksanakan tetingkap rolling kefungsian secara ringkas.

Alternatif lain, terutamanya sesuai untuk senarai atau tupel, menggunakan pendekatan yang mudah:

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

Bergantung pada keperluan khusus dan pertimbangan prestasi, pelaksanaan alternatif ini boleh memberikan fleksibiliti dalam melaksanakan pengulangan tetingkap bergulir untuk pelbagai aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Iterator Tetingkap Bergulir dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn