Perhatikan bahwa tidak selalu mungkin untuk menghasilkan daftar di mana potongannya sama panjangnya. Ini karena elemen daftar mungkin tidak dapat dibagi secara merata ke potongan N
Ini adalah panduan komprehensif untuk membagi daftar menjadi potongan-potongan N dengan Python. Jika Anda mencari solusi cepat, saya yakin hal di atas akan berhasil. Tetapi jika Anda mempelajari Python, pastikan untuk membaca seluruh panduan untuk mengetahui berbagai pendekatan untuk membagi daftar menjadi potongan-potongan. Ide dari panduan ini bukan untuk menggunakan solusi yang sudah ada tetapi untuk mengimplementasikan sendiri logikanya
Mari lompat ke dalamnya
1. Pendekatan Iterator
Berikut adalah contoh cara membagi daftar Python menjadi potongan berukuran sama menggunakan iterator dan kata kunci hasil
def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk)Kode ini akan menampilkan yang berikut
[1, 2, 3] [4, 5, 6] [7, 8, 9]_Mari kita lihat kodenya lebih dekat
Fungsi def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 0 membutuhkan dua argumen. daftar def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 1 dan bilangan bulat def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 2 yang menentukan ukuran setiap potongan. Fungsi menggunakan def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 3 loop untuk mengulangi daftar, dan menghasilkan sublist def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 1 mulai dari indeks saat ini dan berakhir pada indeks saat ini ditambah ukuran potongan
Berikut adalah penjelasan langkah demi langkah tentang cara kerja kode
- Fungsi def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 0 dipanggil dengan daftar def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 1 dan ukuran potongan def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 2
- Loop def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 3 mengulang daftar, mulai dari indeks 0 dan menambah indeks dengan def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 2 setiap kali. Misalnya, jika ukuran chunk adalah 3, iterasi pertama akan dimulai pada indeks 0, iterasi kedua akan dimulai pada indeks 3, iterasi ketiga akan dimulai pada 6, dan seterusnya.
- Pada setiap iterasi, kata kunci [1, 2, 3] [4, 5, 6] [7, 8, 9]_0 membangun sublist def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 1 mulai dari indeks saat ini dan berakhir pada indeks saat ini ditambah ukuran potongan. e. g. jika indeks saat ini adalah 0 dan ukuran potongan adalah 3, sublist akan menjadi [1, 2, 3] [4, 5, 6] [7, 8, 9]2, yang merupakan tiga elemen dari def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 1
- Loop def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 3 dalam kode contoh kemudian mengulangi potongan yang dihasilkan oleh def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 0 dan mencetak setiap potongan
Hasil dari semua ini adalah daftar yang dibagi menjadi N potongan
Tapi Apa yang Dilakukan 'hasil'?
Pendekatan yang diperkenalkan sebelumnya adalah yang termudah untuk membagi daftar menjadi beberapa bagian. Tetapi jika Anda baru mengenal [1, 2, 3] [4, 5, 6] [7, 8, 9]_0 kata kunci dan iterator, solusi ini mungkin membuat Anda bingung
Jika Anda tertarik dengan iterator, pastikan untuk membaca panduan lengkap ini untuk iterator dan iterable dengan Python
Bagian selanjutnya mengajarkan Anda bagaimana melakukan pendekatan sebelumnya tanpa menggunakan kata kunci [1, 2, 3] [4, 5, 6] [7, 8, 9]0 tetapi menggunakan daftar sebagai gantinya
2. Untuk Pendekatan Loop
Berikut cara lain untuk membagi daftar menjadi beberapa bagian dengan Python. Pendekatan ini menggunakan for loop dan daftar dan dengan demikian sedikit lebih ramah-pemula daripada contoh sebelumnya
Berikut adalah langkah-langkah yang perlu Anda ambil
- Tentukan jumlah potongan yang Anda inginkan untuk membagi daftar. Sebut saja nomor ini [1, 2, 3] [4, 5, 6] [7, 8, 9]_8
- Lantai-bagi panjang daftar dengan [1, 2, 3] [4, 5, 6] [7, 8, 9]8 untuk menemukan ukuran setiap potongan (pembagian lantai dibulatkan ke bawah sehingga ukuran potongan tidak e. g. 3. 3333 tetapi malah hanya 3). Kami akan menghubungi nomor ini def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) 2
- Gunakan fungsi # Set the number of chunks N = 4 # Create a list of numbers my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Create an empty list to store the chunks chunks = [] # Iterate over the elements of the list in groups of N for i in range(0, len(my_list), N): # Extract each group of N elements as a sublist chunk = my_list[i:i + N] # Append the sublist to the list of chunks chunks.append(chunk) # Print the chunks print(chunks) _1 untuk membuat daftar angka yang menentukan indeks di mana setiap potongan harus dimulai. Jika daftar asli memiliki 10 elemen dan Anda ingin membaginya menjadi 3 bagian, daftar indeks awal adalah # Set the number of chunks N = 4 # Create a list of numbers my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Create an empty list to store the chunks chunks = [] # Iterate over the elements of the list in groups of N for i in range(0, len(my_list), N): # Extract each group of N elements as a sublist chunk = my_list[i:i + N] # Append the sublist to the list of chunks chunks.append(chunk) # Print the chunks print(chunks) 2
- Gunakan loop def split_list(lst, chunk_size): for i in range(0, len(lst), chunk_size): yield lst[i:i+chunk_size] # Example usage lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] chunk_size = 3 for chunk in split_list(lst, chunk_size): print(chunk) _3 untuk mengulangi daftar indeks awal, dan gunakan sintaks # Set the number of chunks N = 4 # Create a list of numbers my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Create an empty list to store the chunks chunks = [] # Iterate over the elements of the list in groups of N for i in range(0, len(my_list), N): # Extract each group of N elements as a sublist chunk = my_list[i:i + N] # Append the sublist to the list of chunks chunks.append(chunk) # Print the chunks print(chunks) 4 untuk mengekstrak setiap potongan dari daftar asli
Inilah kode yang mengimplementasikan langkah-langkah tersebut. Pastikan untuk membaca komentar untuk tetap di atasnya sepanjang waktu
# Set the number of chunks N = 4 # Create a list of numbers my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Create an empty list to store the chunks chunks = [] # Iterate over the elements of the list in groups of N for i in range(0, len(my_list), N): # Extract each group of N elements as a sublist chunk = my_list[i:i + N] # Append the sublist to the list of chunks chunks.append(chunk) # Print the chunks print(chunks)Kode ini menghasilkan output berikut
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]2. 1. Daftar Pemahaman Bisa Melakukan Hal yang Sama
Saat Anda berurusan dengan for loop, dalam beberapa kasus, Anda mungkin dapat menggunakan pemahaman daftar untuk merapikan kode
Itu selalu diperdebatkan apakah Anda harus menggunakan pemahaman atau tidak. Ini karena pemahaman daftar pasti mempersingkat kode tetapi sebenarnya membuatnya kurang mudah dibaca
Bagaimanapun, inilah contoh sebelumnya yang menggunakan pemahaman daftar alih-alih perulangan for
# Define the input list input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Define the chunk size chunk_size = 3 # Create the output list using a list comprehension output_list = [input_list[i:i + chunk_size] for i in range(0, len(input_list), chunk_size)] # Print the output list print(output_list)Ini akan menghasilkan output berikut
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]3. Sementara Loop
Pada contoh sebelumnya, Anda menggunakan perulangan for untuk membagi daftar menjadi potongan-potongan. Karena Anda dapat menggunakan perulangan for, Anda juga dapat melakukannya dengan perulangan while
Inilah tampilan kode saat menggunakan while loop
# define the list of elements my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # define the size of the chunks chunk_size = 3 # create an empty list to store the chunks chunks = [] # create an index variable to track the current position in the list index = 0 # loop until the index is larger than the length of the list while index < len(my_list): # get the sublist of the current chunk chunk = my_list[index:index+chunk_size] # append the chunk to the list of chunks chunks.append(chunk) # update the index to the next chunk index += chunk_size # print the resulting chunks print(chunks)Keluaran
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]Solusi ini membuat daftar kosong untuk menyimpan potongan yang dihasilkan dan kemudian menggunakan while loop untuk mengulangi daftar asli dengan ukuran potongan, menambahkan setiap potongan ke daftar potongan. Variabel indeks digunakan untuk melacak posisi saat ini dalam daftar dan diperbarui pada setiap iterasi ke potongan berikutnya
4. Gunakan NumPy untuk Membagi menjadi N Potongan
Di Python, ada modul matematika dan sains populer yang disebut NumPy yang banyak digunakan oleh komunitas ilmiah Python
Jika Anda sudah menggunakan NumPy, Anda dapat menggunakan fungsi # Set the number of chunks N = 4 # Create a list of numbers my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Create an empty list to store the chunks chunks = [] # Iterate over the elements of the list in groups of N for i in range(0, len(my_list), N): # Extract each group of N elements as a sublist chunk = my_list[i:i + N] # Append the sublist to the list of chunks chunks.append(chunk) # Print the chunks print(chunks) 5 untuk membagi daftar menjadi beberapa bagian. Fungsi ini menggunakan daftar sebagai argumen pertama dan ukuran potongan sebagai argumen kedua
Perhatikan bahwa pendekatan ini memaksa elemen menjadi N potongan. Nilai sisa tidak ditempatkan di bagian mereka sendiri tetapi didorong ke bagian terakhir sebagai gantinya
Sebagai contoh, mari kita bagi daftar 10 angka menjadi 3 bagian
import numpy as np # Define the list to be split my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Split the list into chunks of size 3 chunks = np.array_split(my_list, 3) # Print the resulting chunks print(chunks) # Output: [array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9, 10])]Perhatikan bagaimana potongan terakhir sekarang memiliki 4 elemen alih-alih mengambil elemen tambahan dan menempatkannya di potongannya sendiri