Jika Anda ingin membagi daftar menjadi potongan yang lebih kecil atau jika Anda ingin membuat matriks dengan python menggunakan data dari daftar dan tanpa menggunakan modul Numpy, Anda dapat menggunakan cara yang ditentukan di bawah ini. Ada banyak situasi ketika daftar diberikan kepada Anda, dan itu perlu dipisah pada indeks tertentu untuk menghasilkan beberapa daftar, atau jika tabel/matriks kolom X baris perlu dibuat yang akan memiliki jumlah baris dan kolom yang tetap . Di bawah ini kami telah menentukan beberapa cara berbeda untuk melakukannya, Anda dapat menggunakan contoh kode apa pun yang sesuai dengan kebutuhan Anda
1. Menggunakan pemahaman daftar
Saat mengerjakan tugas yang lebih sederhana, ini disarankan, tetapi jika persyaratannya adalah untuk aplikasi yang lebih besar, disarankan untuk menggunakan metode dan merangkum tugas ini di dalam metode. Ini agar konsep berorientasi objek diimplementasikan dengan cara yang benar
Waktu untuk contoh
my_list = [1,2,4,5,6,9,0,34,56,89,31,42] n = 3 [my_list[i:i + n] for i in range(0, len(my_list), n)]Keluaran
[[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] _2. Menggunakan metode yang ditentukan pengguna
Suatu metode dapat didefinisikan yang mengulangi daftar dan menghasilkan potongan berukuran n berturut-turut di mana [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 0 mengacu pada nomor di mana pemisahan perlu dilakukan
Waktu untuk contoh
my_list = [1,2,4,5,6,9,0,34,56,89,31,42] # defining the function def split_into_chunks(l, n): for i in range(0, len(l), n): yield l[i:i + n] # yields successive n-sized chunks of data import pprint pprint.pprint(list(split_into_chunks(my_list, 3)))Keluaran
[[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] _Catatan. Metode [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 1 dapat digunakan sebagai pengganti [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 2 dan hasilnya akan sama. Metode pprint di python hanya digunakan untuk memastikan bahwa data dicetak dengan cara yang rapi dan rapi
3. Menggunakan itertools
Metode [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 3 memberikan generator yang perlu diulang menggunakan loop [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 4
Waktu untuk contoh
my_list = [1,2,4,5,6,9,0,34,56,89,31,42] from itertools import zip_longest def group_elements(n, iterable, padvalue=None): return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue) for i in group_elements(3,my_list): print(i)_Keluaran
(1, 2, 4) (5, 6, 9) (0, 34, 56) (89, 31, 42)4. Menggunakan lambda dan islice
Fungsi lambda dalam python bersama dengan metode [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 5 memberikan generator yang perlu diulang. Metode [[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] 5 digunakan untuk secara selektif mencetak nilai spesifik yang ada dalam wadah iterable
Waktu untuk contoh
my_list = [1,2,4,5,6,9,0,34,56,89,31,42] from itertools import islice def group_elements(it, size): it = iter(it) return iter(lambda: tuple(islice(it, size)), ()) for i in group_elements( my_list , 3): print(i)Keluaran
(1, 2, 4) (5, 6, 9) (0, 34, 56) (89, 31, 42)5. Menggunakan fungsi lambda
Fungsi lambda sederhana juga dapat digunakan untuk memotong data menjadi ukuran tertentu dan membaginya menjadi struktur matriks atau potongan yang lebih kecil
Waktu untuk contoh
my_list = [1,2,4,5,6,9,0,34,56,89,31,42] n = 3 chunk_data = lambda my_list, n: [my_list[x: x+n] for x in range(0, len(my_list), n)] chunk_data(my_list, n)Keluaran
[[1, 2, 4], [5, 6, 9], [0, 34, 56], [89, 31, 42]] _Kesimpulan
Dalam posting ini, kami melihat berbagai cara di mana struktur seperti matriks dapat dibuat tanpa menggunakan Numpy. Beri tahu kami bagaimana Anda akan mendekati masalah ini di bagian komentar di bawah
Mengikuti program Python membagi daftar menjadi potongan berukuran sama. Fungsi yang ditentukan pengguna even_chunks() mengonversi original_list menjadi potongan panjang yang berbeda _______ 45 _______
Kode Sumber Python. Daftar ke Potongan Berukuran Merata
def even_chunks(original_list, size): for i in range(0, len(original_list), size): yield list(original_list[i:i + size]) test_list = range(45) chunks = even_chunks(test_list, 5) for chunk in chunks: print(chunk)Keluaran
Keluaran dari program di atas adalah
[0, 1, 2, 3, 4] [5, 6, 7, 8, 9] [10, 11, 12, 13, 14] [15, 16, 17, 18, 19] [20, 21, 22, 23, 24] [25, 26, 27, 28, 29] [30, 31, 32, 33, 34] [35, 36, 37, 38, 39] [40, 41, 42, 43, 44]Dalam tutorial ini, Anda akan belajar cara menggunakan Python untuk membagi daftar, termasuk cara membaginya menjadi dua dan menjadi n potongan berukuran sama. Anda akan belajar cara membagi daftar Python menjadi potongan size n, artinya Anda akan mengembalikan daftar yang masing-masing berisi n (atau lebih sedikit jika tidak ada yang tersisa) item. Mengetahui cara bekerja dengan daftar di Python adalah keterampilan penting untuk dipelajari
Di akhir tutorial ini, Anda akan belajar
- Cara membagi daftar menjadi dua dengan Python
- Cara membagi daftar menjadi potongan-potongan dengan Python
- Cara membagi daftar pada posisi indeks tertentu dengan Python
- Cara menggunakan NumPy untuk membagi daftar dengan Python
Jawaban Cepat. Gunakan Pengindeksan Daftar untuk Membagi Daftar dengan Python
Daftar isi
Cara Mengakses Daftar Python dengan Indeksnya
Salah satu dari banyak properti bagus dari daftar adalah bahwa daftar itu dipesan. Ini berarti bahwa kita dapat mengakses suatu item, atau serangkaian item, berdasarkan indeksnya. Mari kita lihat cara kerja indeks daftar Python
Kita dapat melihat di sini bahwa daftar Python memiliki indeks positif dan juga indeks negatif. Indeks positif dimulai pada posisi 0, artinya item pertama. Indeks daftar negatif dimulai dari -1, memungkinkan Anda mengambil item terakhir dari daftar
Demikian pula, Anda dapat mengakses rentang data dalam daftar menggunakan pengiris daftar. Ini dapat dilakukan dengan menggunakan karakter titik dua :_, yang memungkinkan Anda untuk memilih item dari posisi tertentu hingga posisi tertentu
Cara Membagi Daftar Python menjadi Setengah
Anda dapat dengan mudah membagi daftar Python menjadi dua menggunakan pengindeksan daftar. Seperti yang Anda pelajari di atas, Anda dapat memilih beberapa item dalam daftar menggunakan pengirisan daftar. Mari kita lihat bagaimana kita dapat menggunakan pengirisan daftar untuk membagi daftar menjadi dua
# Split a List in Half with Python List Slicing a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] half_length = len(a_list) // 2 first_half, second_half = a_list[:half_length], a_list[half_length:] print(f'{first_half=}') print(f'{second_half=}') # Returns: # first_half=[1, 2, 3, 4, 5] # second_half=[6, 7, 8, 9, 10]Mari uraikan apa yang kita lakukan pada kode di atas
- Kami membuat daftar a_list, yang berisi sepuluh item berbeda
- Kami kemudian membuat variabel integer, half_length, yang merupakan hasil dari membagi panjang daftar dengan dua menggunakan pembagian integer
- Kami kemudian menugaskan variabel, # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]_0 dan # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]1, yang mengiris daftar ke atas dan dari setengah variabel
Di bagian berikut, Anda akan mempelajari cara membagi daftar menjadi potongan berukuran berbeda dengan Python
Pisahkan Daftar menjadi Potongan Menggunakan For-Loop
For-loop di Python adalah alat yang sangat berguna untuk digunakan. Mereka membuat banyak metode Python mudah diimplementasikan, serta mudah dimengerti. Untuk alasan ini, mari kita mulai dengan menggunakan for-loop untuk membagi daftar kita menjadi beberapa bagian
Salah satu cara Anda dapat membagi daftar menjadi n bagian yang berbeda. Mari kita lihat bagaimana kita bisa melakukannya dengan menggunakan for loop
# Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]Mari kita lihat apa yang telah kita lakukan di sini
- Kami instantiate dua daftar. a_list_, yang berisi item dari daftar asli kami, dan # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]3, yang kosong
- Kami juga mendeklarasikan variabel, # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]4, yang telah kami atur menjadi tiga, untuk menunjukkan bahwa kami ingin membagi daftar kami menjadi potongan berukuran 3
- Kami kemudian mengulang daftar kami menggunakan fungsi rentang. Apa yang telah kita lakukan di sini adalah membuat item dari 0, hingga ukuran daftar kita, mengulang pada ukuran potongan kita. Misalnya, fungsi jangkauan kita akan terbaca # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]5, artinya kita akan mengulang menggunakan item # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]6
- Kami kemudian mengindeks daftar kami dari # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]_7, artinya loop pertama adalah # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]8, lalu # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]9, dll
- Daftar yang diindeks ini ditambahkan ke daftar kami
Kita dapat melihat bahwa ini adalah cara yang cukup mudah untuk memecah daftar Python menjadi potongan-potongan. Selanjutnya, Anda akan belajar bagaimana melakukannya dengan menggunakan pemahaman daftar Python
Pisahkan Daftar Python menjadi Potongan Menggunakan Pemahaman Daftar
Dalam banyak kasus, for-loop Python dapat ditulis ulang dengan cara yang lebih Pythonic dengan menuliskannya sebagai satu baris yang disebut pemahaman daftar. Pemahaman daftar di Python memiliki sejumlah manfaat yang berguna dibandingkan for-loop, termasuk tidak harus membuat instance daftar kosong terlebih dahulu, dan tidak harus memecah for-loop Anda melalui beberapa baris
Mari kita lihat bagaimana kita bisa menulis pemahaman daftar Python untuk membagi daftar menjadi potongan-potongan
# Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]Sebelum kita memecah kode ini, mari kita lihat seperti apa sintaks dasar pemahaman daftar Python
Sekarang mari kita pecahkan kode kita untuk melihat cara kerjanya
- Kami mendeklarasikan variabel # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]_4 untuk menentukan seberapa besar daftar potongan yang kami inginkan
- Untuk ekspresi pemahaman daftar kami, kami mengindeks daftar kami berdasarkan posisi i+chunk_sizeth ke i+chunk_sizeth
- Kami menggunakan ungkapan ini untuk mengulangi setiap item dalam keluaran objek # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]1 yang dibuat berdasarkan # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]2, yang dalam hal ini adalah # Split a Python List into Chunks using For Loops a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunked_list = list() chunk_size = 3 for i in range(0, len(a_list), chunk_size): chunked_list.append(a_list[i:i+chunk_size]) print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]6
Meskipun pendekatan ini sedikit lebih cepat untuk diketik, apakah ini lebih mudah dibaca daripada for-loop, siap untuk didiskusikan. Mari pelajari cara membagi daftar Python kita menjadi beberapa bagian menggunakan numpy
Ingin mempelajari lebih lanjut?
Pisahkan Daftar menjadi Potongan Menggunakan NumPy
Numpy adalah pustaka Python luar biasa yang membuat operasi matematika jauh lebih mudah. Yang sedang berkata, NumPy juga bekerja dengan objek seperti daftar, yang disebut array NumPy, yang membuat bekerja dengan daftar lebih mudah. Array NumPy ini dikemas dengan banyak metode berbeda untuk memanipulasi array Anda
Penting untuk diperhatikan bahwa metode ini hanya akan berfungsi dengan nilai numerik
Di bagian tutorial ini, kami akan menggunakan fungsi NumPy # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]4 untuk membagi daftar Python kami menjadi potongan-potongan. Fungsi ini memungkinkan Anda untuk membagi array menjadi sejumlah array
Mari kita lihat bagaimana kita dapat menggunakan NumPy untuk membagi daftar kita menjadi 3 bagian terpisah
# Split a Python List into Chunks using numpy import numpy as np a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] our_array = np.array(a_list) chunked_arrays = np.array_split(our_array, 3) chunked_list = [list(array) for array in chunked_arrays] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]Ini adalah cara yang cukup panjang dalam melakukan sesuatu, dan kami pasti dapat menguranginya sedikit. Mari kita lihat bagaimana itu bisa dilakukan
chunked_list = [list(array) for array in np.array_split(np.array(our_list), 3)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]Mari kita uraikan ini sedikit
- Kami mengubah daftar kami menjadi array Numpy
- Kami membagi array kami menjadi n jumlah array menggunakan fungsi # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]5
- Akhirnya, kami menggunakan pemahaman daftar untuk mengembalikan semua array dalam daftar array kami menjadi daftar
Ingin mempelajari lebih lanjut tentang pembagian dengan Python?
Pisahkan Daftar menjadi Potongan Menggunakan Itertools
Mari kita lihat bagaimana kita dapat menggunakan perpustakaan # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]6 untuk membagi daftar menjadi potongan-potongan. Secara khusus, kita dapat menggunakan fungsi # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]7 untuk melakukannya
Mari kita lihat bagaimana kita bisa melakukan ini
# Split a Python List into Chunks using itertools from itertools import zip_longest our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = list(zip_longest(*[iter(our_list)]*chunk_size, fillvalue='')) print(chunked_list) # Returns: [(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, '')] chunked_list = [list(item) for item in list(zip_longest(*[iter(our_list)]*chunk_size, fillvalue=''))] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]Kita dapat melihat di sini bahwa kita dapat memiliki implementasi yang relatif sederhana yang mengembalikan daftar tupel. Perhatikan salah satu hal yang dilakukan di sini adalah membagi daftar menjadi potongan berukuran n, bukan menjadi n potongan
Pertanyaan yang Sering Diajukan
Apa cara terbaik untuk membagi daftar Python?
Cara terbaik untuk membagi daftar Python adalah dengan menggunakan pengindeksan daftar, karena ini memberi Anda fleksibilitas yang sangat besar
Kapan sebaiknya Anda tidak menggunakan Fungsi NumPy array_split() untuk membagi daftar dengan Python?
Fungsi NumPy array_split() memungkinkan Anda membagi array menjadi sejumlah array dengan mudah. Namun, fungsi tersebut hanya bekerja dengan nilai numerik (karena array NumPy hanya dapat berisi nilai numerik)
Kesimpulan
Dalam posting ini, Anda belajar cara membagi daftar Python menjadi beberapa bagian. Anda belajar bagaimana menyelesaikan pemisahan daftar Python menjadi potongan-potongan size n atau menjadi # Split a Python List into Chunks using list comprehensions our_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] chunk_size = 3 chunked_list = [our_list[i:i+chunk_size] for i in range(0, len(our_list), chunk_size)] print(chunked_list) # Returns: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]9. Anda telah mempelajari cara melakukan ini menggunakan for-loop, menggunakan pemahaman daftar, NumPy, dan itertools