Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulangi Secara Elegan Melalui Senarai dalam Python dalam Potongan Bersaiz Khusus?

Bagaimanakah Saya Boleh Mengulangi Secara Elegan Melalui Senarai dalam Python dalam Potongan Bersaiz Khusus?

DDD
DDDasal
2024-12-18 20:56:20832semak imbas

How Can I Elegantly Iterate Through a List in Python in Specific-Sized Chunks?

Ketulan Elegan: Mengulangi Senarai dalam Kumpulan

Membalas senarai dalam bongkah bersaiz khusus boleh menjadi tugas biasa dalam pengaturcaraan Python. Jika senarai mengandungi elemen untuk diproses dalam kumpulan yang dipratentukan, pendekatan biasa mungkin menyerupai kod yang disediakan:

for i in range(0, len(ints), 4):
    # Placeholder operation for illustrative purposes
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]

Walaupun pendekatan ini mungkin memenuhi keperluan fungsian, pendekatan ini boleh berasa agak kikuk dan tidak Pythonic. Artikel ini menyelidiki penyelesaian yang lebih elegan dan idiomatik menggunakan fungsi penjana tersuai:

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

Fungsi penjana ini, chunker, membahagikan urutan input dengan elegan kepada ketulan saiz yang ditentukan, menyediakan cara yang diperkemas untuk mengulangi mereka. Ungkapan penjana dalam chunker menghasilkan setiap bongkah, bermula dari permulaan jujukan dan memajukan mengikut saiz bongkah sehingga mencapai atau melepasi penghujung jujukan.

Berikut ialah contoh yang menunjukkan kepelbagaian chunker fungsi:

text = "I am a very, very helpful text"

for group in chunker(text, 7):
   print(repr(group),)

Output:

'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'

Contoh ini memotong rentetan teks kepada kumpulan 7 aksara setiap satu. Begitu juga, ia boleh digunakan dengan apa-apa jenis jujukan, termasuk senarai haiwan atau struktur data sewenang-wenangnya.

Dalam Python 3.12 dan kemudian, fungsi chunker boleh dipermudahkan lagi menggunakan fungsi itertools.tee():

from itertools import tee

def chunker(seq, size):
    a, b = tee(seq, 2)
    return (list(islice(a, i, None, size)) for i in range(size))

Variasi fungsi ini mengelak daripada mencipta senarai perantaraan dan beroperasi terus pada jujukan input, menyerlahkan kuasa fungsi terbina dalam Python untuk bekerja dengan iterables.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Secara Elegan Melalui Senarai dalam Python dalam Potongan Bersaiz Khusus?. 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