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
Lepaskan: 2024-12-18 20:56:20
asal
889 orang telah melayarinya

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

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

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

Output:

'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'
Salin selepas log masuk

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan