Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih (atau Tiga Kali ganda) Elemen dalam Senarai Python dengan Cekap?

Bagaimanakah Saya Boleh Mengulangi Pasangan Bertindih (atau Tiga Kali ganda) Elemen dalam Senarai Python dengan Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 14:53:17494semak imbas

How Can I Efficiently Iterate Over Overlapping Pairs (or Triples) of Elements in a Python List?

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!

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