Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulangi Senarai dalam Pasangan atau Kumpulan dalam Python?

Bagaimanakah Saya Boleh Mengulangi Senarai dalam Pasangan atau Kumpulan dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-12-25 10:53:50239semak imbas

How Can I Iterate Over Lists in Pairs or Groups in Python?

Lelaran Berpasangan Ke Atas Senarai

Lelaran ke atas elemen secara berpasangan ialah keperluan biasa apabila memanipulasi senarai. Walau bagaimanapun, standard untuk pemahaman gelung dan senarai dalam Python tidak menyediakan penyelesaian terbina dalam untuk traversal berpasangan.

Pelaksanaan Berpasangan

Untuk mengatasi had ini, a fungsi tersuai yang dipanggil pairwise() boleh dilaksanakan. Fungsi ini mengambil iterable sebagai input dan mengembalikan pasangan elemen.

def pairwise(iterable):
    "s -> (s0, s1), (s2, s3), (s4, s5), ..."
    a = iter(iterable)
    return zip(a, a)

Penggunaan

Menggunakan fungsi pairwise() ini, anda boleh mengulang elemen secara berpasangan sebagai berikut:

l = [1, 2, 3, 4, 5, 6]

for x, y in pairwise(l):
    print("{} + {} = {}".format(x, y, x + y))

Output:

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11

Pengumpulan Umum

Untuk kes di mana anda perlu mengulangi elemen dalam kumpulan dari sebarang saiz, fungsi yang lebih umum dipanggil grouped() boleh digunakan.

def grouped(iterable, n):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)] * n)

Penggunaan

for x, y in grouped(l, 2):
    print("{} + {} = {}".format(x, y, x + y))

Taip Semakan dengan Mypy

Untuk pengguna Python 3 yang ingin melakukan semak taip dengan Mypy, fungsi grouped() boleh diberi anotasi seperti berikut:

from typing import Iterable, Tuple, TypeVar

T = TypeVar("T")

def grouped(iterable: Iterable[T], n=2) -> Iterable[Tuple[T, ...]]:
    """s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), ..."""
    return zip(*[iter(iterable)] * n)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Senarai dalam Pasangan atau Kumpulan dalam 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