Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membahagikan Senarai kepada Bahagian yang Hampir Sama?

Bagaimana untuk Membahagikan Senarai kepada Bahagian yang Hampir Sama?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 04:24:02897semak imbas

How to Split a List into Nearly Equal Parts?

Membahagikan Senarai kepada Bahagian yang Sama

Apabila bekerja dengan senarai elemen, mungkin perlu membahagikannya kepada yang lebih kecil, lebih kurang sama bahagian. Ini amat berguna untuk tugas seperti pemprosesan data, pengkomputeran selari atau algoritma teragih. Berikut ialah penerokaan kaedah untuk membahagikan senarai dengan berkesan kepada n bahagian.

Penyelesaian:

Untuk mencapai pembahagian senarai yang hampir sama kepada n bahagian, perkara berikut langkah boleh diambil:

  1. Kira hasil bahagi, k, dan baki, m, dengan membahagikan panjang senarai dengan n: k, m = divmod(len(a), n).
  2. Gunakan penjana senarai untuk menghasilkan bahagian terbelah: (a[i*k min(i, m):(i 1)*k min(i 1, m)] untuk i dalam julat(n)) .

Pendekatan ini memastikan bahagian dibahagikan hampir sama rata, dengan bahagian m pertama mengandungi satu elemen tambahan daripada bahagian n-m yang tinggal.

Contoh:

Untuk menggambarkan keberkesanan kaedah ini, pertimbangkan senarai 11 integer: julat(11). Membahagikan senarai ini kepada 3 bahagian menggunakan fungsi split menghasilkan keputusan berikut:

>>> list(split(range(11), 3))

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]

Seperti yang boleh diperhatikan, senarai dibahagikan kepada tiga bahagian dengan saiz yang lebih kurang sama, dengan bahagian pertama mengandungi empat elemen dan dua bahagian lain yang mengandungi tiga elemen setiap satu.

Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Senarai kepada Bahagian yang Hampir Sama?. 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