Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Cekap Mengulang Pasangan Bertindih (dan Tiga Kali ganda) dalam Senarai Python?
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!