Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memotong Iterator dengan Cekap dalam Python?
Lelaran Lelaran dalam Potongan
Pertimbangkan senario di mana anda memiliki lelaran l = [1, 2, 3, 4, 5, 6 , 7] dan ingin membahagikannya kepada ketulan saiz 3, menghasilkan iterator yang mengandungi [[1, 2, 3], [4, 5, 6], [7]].
Penyelesaian itertools
Perpustakaan standard Python menawarkan penyelesaian yang mudah dalam modul itertools :
import itertools def grouper(iterable, n, *, incomplete='fill', fillvalue=None): """Collect data into non-overlapping fixed-length chunks or blocks.""" args = [iter(iterable)] * n if incomplete == 'fill': return zip_longest(*args, fillvalue=fillvalue) elif incomplete == 'strict': return zip(*args, strict=True) elif incomplete == 'ignore': return zip(*args) else: raise ValueError('Expected fill, strict, or ignore') chunks = list(grouper(l, 3)) # Output: [[1, 2, 3], [4, 5, 6], [7]]
Perpustakaan Standard Dipertingkat Versi
Fungsi khusus, berkumpulan, diperkenalkan dalam versi terbaharu resipi itertools, dengan tepat menangani keperluan chunking ini:
from itertools import batched chunks = list(batched(l, 3)) # Output: [[1, 2, 3], [4, 5, 6], [7]]
Penyelesaian Bukan Umum
Untuk urutan khususnya, pendekatan yang lebih mudah yang mengendalikan bahagian terakhir dengan berkesan ialah:
chunks = [my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size)]
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memotong Iterator dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!