Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah `zip([iter(s)]*n)` dengan cekap membahagikan senarai kepada bahagian yang sama dalam Python?

Bagaimanakah `zip([iter(s)]*n)` dengan cekap membahagikan senarai kepada bahagian yang sama dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-21 03:48:11618semak imbas

How does `zip([iter(s)]*n)` efficiently split a list into equal chunks in Python?

Menyahbina zip([iter(s)]n) 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!

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