Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah `zip([iter(s)]*n)` dengan cekap membahagikan senarai kepada bahagian yang sama dalam Python?
Dalam Python, fungsi zip() menggabungkan elemen daripada berbilang iterable ke dalam satu tuple yang boleh diulang. Apabila digunakan dengan zip sintaks([iter(s)]n), ia menawarkan cara yang mudah untuk membahagikan senarai kepada ketulan yang sama saiz.
Cara Ia Berfungsi:
Ungkapan [iter(s)]n mencipta senarai yang mengandungi n salinan daripada iterator atas senarai s. Setiap salinan iterator bermula pada permulaan senarai. *args membongkar senarai menjadi argumen untuk zip(), menyebabkan n iterables dihantar ke fungsi.
Verbose Equivalent:
Untuk mencipta semula kefungsian zip ([iter(s)]n) dengan verbose kod:
def verbose_chunk(s, n): """Returns a list of chunks of equal size from a list.""" chunks = [] for i in range(n): chunk = [] for j in range(len(s) // n): chunk.append(next(iter(s))) chunks.append(tuple(chunk)) return chunks
Kod ini mula-mula berulang ke atas bilangan ketulan yang dikehendaki. Untuk setiap ketulan, ia menggunakan gelung bersarang untuk mengulangi elemen dalam senarai dan menambahkannya pada ketulan. Bongkahan itu kemudiannya ditukar menjadi tuple dan ditambah pada senarai ketulan.
Contoh:
s = [1,2,3,4,5,6,7,8,9] n = 3 print(list(zip(*[iter(s)]*n))) # [(1,2,3),(4,5,6),(7,8,9)] print(verbose_chunk(s, n)) # [(1,2,3),(4,5,6),(7,8,9)]
Kedua-dua pendekatan menghasilkan hasil yang sama, dengan zip ringkas ([iter(s)]n) ungkapan yang menawarkan sintaks yang lebih cekap untuk membahagikan senarai kepada ketulan.
Atas ialah kandungan terperinci Bagaimanakah `zip([iter(s)]*n)` dengan cekap membahagikan senarai kepada bahagian yang sama dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!