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
Lepaskan: 2024-12-22 06:00:18
asal
859 orang telah melayarinya

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
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan