Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulangi Secara Elegan Melalui Senarai dalam Python dalam Potongan Bersaiz Khusus?
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!