Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Cekap Mengulang Pasangan Bertindih (dan Tiga Kali ganda) dalam Senarai Python?

Bagaimana untuk Cekap Mengulang Pasangan Bertindih (dan Tiga Kali ganda) dalam Senarai Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 06:00:18853semak imbas

How to Efficiently Iterate Over Overlapping Pairs (and Triples) in Python Lists?

Cara Mengulang Pasangan Nilai Bertindih daripada Senarai

Apabila bekerja dengan senarai dalam Python, selalunya perlu mengulang nilai secara berpasangan. Pendekatan biasa ialah menggunakan konstruk seperti:

for current, next in zip(the_list, the_list[1:]):
    # Do something

Semasa kod ini berfungsi, terdapat penyelesaian yang lebih idiomatik dan cekap menggunakan fungsi berpasangan daripada modul itertools. Berikut ialah pelaksanaan Python 3.8 yang disemak semula:

import itertools

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

Untuk Python 2, gunakan itertools.izip dan bukannya zip (memandangkan zip dalam Python 2 mencipta senarai dan bukannya lelar malas).

The fungsi berpasangan berfungsi dengan mencipta dua iterator selari, a dan b, menunjuk kepada elemen pertama yang sama. b kemudian maju selangkah ke hadapan menggunakan seterusnya. Fungsi izip menggabungkan elemen daripada dua iterator untuk membentuk pasangan bertindih.

Pendekatan ini juga boleh digeneralisasikan untuk mengendalikan "tetingkap" nilai yang lebih besar. Sebagai contoh, untuk mengulang tiga kali ganda nilai, gunakan fungsi berikut:

def threes(iterator):
    "s -> (s0, s1, s2), (s1, s2, s3), (s2, s3, 4), ..."
    a, b, c = itertools.tee(iterator, 3)
    next(b, None)
    next(c, None)
    next(c, None)
    return zip(a, b, c)

Kaveat: Adalah penting untuk ambil perhatian bahawa jika salah satu iterator maju lebih jauh daripada yang lain disebabkan oleh penggunaan seterusnya, pelaksanaan akan menyimpan elemen yang digunakan dalam ingatan sehingga semua iterator telah menggunakan elemen tersebut.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengulang Pasangan Bertindih (dan Tiga Kali ganda) 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