Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih dengan Cekap dalam Senarai Python?

Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih dengan Cekap dalam Senarai Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-14 14:13:10566semak imbas

How Can I Efficiently Iterate Over Overlapping Pairs in Python Lists?

Teknik Tetingkap Gelongsor untuk Mengulang Pasangan Bertindih

Apabila bekerja dengan senarai dalam Python, selalunya perlu mengulangi pasangan elemen yang bertindih . Pendekatan biasa ialah menggunakan zip dan zip[1:] untuk mencipta dua iterator yang maju secara bebas ke atas senarai. Walau bagaimanapun, mungkin terdapat cara yang lebih cekap atau idiomatik untuk mencapai hasil yang sama.

Fungsi Berpasangan Itertools

Python 3.8 memperkenalkan fungsi berpasangan daripada modul itertools. Fungsi ini mengambil iterable dan mengembalikan iterator yang menghasilkan pasangan elemen yang bertindih.

Untuk versi Python di bawah 3.8, fungsi yang serupa boleh dilaksanakan menggunakan tee:

def pairwise(iterable):
    "s -> (s0, s1), (s1, s2), (s2, s3), ..."
    a, b = itertools.tee(iterable)
    next(b, None)
    return zip(a, b)

Faedah daripada Pairwise

Fungsi berpasangan mempunyai beberapa kelebihan berbanding zip tradisional pendekatan:

  • Ia hanya mencipta dua iterator, manakala pendekatan zip mencipta tiga.
  • Ia boleh disesuaikan dengan mudah untuk menghasilkan tingkap gelongsor sebarang saiz menggunakan parameter n fungsi tee.
  • Ia adalah fungsi terbina dalam dan oleh itu lebih cekap daripada adat pelaksanaan.

Kesimpulan

Walaupun pendekatan zip tradisional berfungsi, fungsi berpasangan menyediakan cara yang lebih cekap dan idiomatik untuk mengulangi pasangan elemen yang bertindih dalam Ular sawa. Ia amat berguna untuk mencipta tetingkap gelongsor data untuk pemprosesan atau analisis.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih dengan Cekap dalam Senarai 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