Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulang Lebih Pasangan (atau Kumpulan) Elemen dalam Senarai Python?

Bagaimanakah Saya Boleh Mengulang Lebih Pasangan (atau Kumpulan) Elemen dalam Senarai Python?

Susan Sarandon
Susan Sarandonasal
2024-12-10 15:55:13698semak imbas

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

Lelaran pada Pasangan Elemen dalam Senarai

Apabila mengulang senarai, kita sering menghadapi situasi di mana kita memerlukan akses kepada dua elemen di suatu masa. Untuk menangani perkara ini, kami boleh menggunakan konsep lelaran berpasangan.

Fungsi zip() terbina dalam Python boleh membantu kami dalam hal ini. Kaedah berpasangan() atau berkumpulan() menggunakan lelaran dan menghasilkan urutan dua elemen berturut-turut. Begini cara kita boleh melaksanakannya:

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

Menggunakan fungsi ini, mari kita pertimbangkan senarai [1, 2, 3, 4, 5, 6]. Untuk menunjukkan lelaran berpasangan:

for x, y in pairwise(l):
   print("%d + %d = %d" % (x, y, x + y))

Ini akan menghasilkan output berikut:

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

Sebagai alternatif, fungsi grouped() membolehkan kami mengulangi n elemen pada satu masa. Berikut ialah perlaksanaan:

def grouped(iterable, n=2):
    "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)

Sebagai contoh, dengan n ditetapkan kepada 3, kita boleh mengulang tiga elemen pada satu masa:

for x, y, z in grouped(l, 3):
   print("%d + %d + %d = %d" % (x, y, z, x + y + z))

Pendekatan ini cekap kerana ia berulang sepanjang senaraikan sekali sahaja dan menghapuskan keperluan untuk senarai perantaraan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Lebih Pasangan (atau Kumpulan) Elemen dalam Senarai 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