Menyalurkan Pasangan Nilai Bertindih dalam Python
Apabila mengulang senarai dalam Python, anda mungkin perlu mengakses kedua-dua elemen semasa dan elemen seterusnya secara serentak. Secara tradisinya, ini telah dicapai menggunakan kod seperti:
for current, next in zip(the_list, the_list[1:]): # Do something
Walau bagaimanapun, Python 3.8 memperkenalkan cara yang lebih cekap untuk mencapai ini:
Menggunakan Fungsi berpasangan
Dokumentasi Python menyediakan fungsi berpasangan mudah untuk ini tujuan:
import itertools def pairwise(iterable): a, b = itertools.tee(iterable) next(b, None) return zip(a, b)
Fungsi ini mencipta dua iterator, a dan b, yang menghala ke elemen pertama bagi input boleh lelar. Iterator b kemudiannya maju satu langkah, menghasilkan penunjuk ke elemen semasa dan b menunjuk ke elemen seterusnya. Fungsi zip kemudiannya digunakan untuk mencipta pasangan elemen ini.
Untuk Python 2
Untuk Python 2, anda boleh menggunakan fungsi berpasangan yang serupa dengan itertools.izip fungsi bukannya zip:
import itertools def pairwise(iterable): a, b = itertools.tee(iterable) next(b, None) return itertools.izip(a, b)
Mengerti kepada Berbilang Elemen
Fungsi berpasangan boleh digeneralisasikan untuk menghasilkan tetingkap elemen yang lebih besar dengan melaraskan parameter n dalam panggilan tee. Sebagai contoh, untuk mencipta pasangan tiga elemen, anda boleh menggunakan:
def threes(iterator): 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 teknik ini boleh menggunakan sejumlah besar memori jika satu iterator maju lebih jauh daripada yang lain. Ini boleh berlaku apabila saiz tetingkap besar atau jika terdapat banyak elemen dalam leterable asal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih (atau Tiga Kali ganda) Elemen dalam Senarai Python dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!