Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

List Comprehension pada Python

by
Read Time:7 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Aditia Dwiperdana (you can also view the original English article)

Fitur list comprehension menyediakan cara untuk menulis loop for lebih jelas. Fitur ini berguna ketika kamu mau membuat list baru dari list yang sudah ada atau dari iterable. Contohnya, kamu bisa menggunakan list comprehension untuk membuat list berisi nilai kuadrat dari list berisi angka. Begitu pula kmu bisa menggunakan kondisi yang sama pada sebuah list berisi angka sedemikian sehingga list yang baru dibuat adalah subset dari list yang asli.

Perlu diketahui kamu tidak bisa menulis semua loop for sebagai list comprehension. Satu hal lagi: nama 'list comprehension' bisa sedikit membingungkan karena seakan hanya bekerja untuk list saja. Pada kenyataannya, kata 'list' pada list comprehension digunakan untuk menunjukkan bahwa kamu bisa membuat loop untuk semua iterable dalam Python dan hasil akhirnya berupa list.

Loop dan List Comprehension

List comprehension dasar yang tidak menggunakan kondisi akan seperti berikut:

Kita mulai dengan menulis loop for sederhana untuk 15 bilangan pertama kelipatan 5. Pertama, kamu perlu buat list kosong. Lalu, kamu perlu mengiterasi sekumpulan angka dan mengalinya dengan 5. Urutan angka baru yang kamu dapat akan berisi kelipatan 5.

Loop for di atas pada dasarnya memilki struktur berikut:

Jika kamu bandingkan dengan list comprehension yang kamu baca sebelumnya, kamu bisa lihat bahwa <the_element> adalah n, <the_iterable> adalah range(1,16), dan <the_expression> adalah n*5. Mengisi nilai-nilai ini pada list comprehension akan memiliki hasil sebagai berikut:

Begitu pula kamu bisa mendapat list dengan pangkat tiga dari sejumlah bilangan dengan cara berikut:

Kondisi dalam List Comprehension

Kamu juga bisa menggunakan kondisi if untuk mengabaikan nilai-nilai tertentu dari list akhir. Dalam kasus ini, list comprehension menerima format berikut:

Contoh dasar comprehension jenis ini adalah untuk mendapatkan semua bilangan genap dari sejumlah angka. Sebuah loop for untuk melakukan tugas ini akan terlihat seperti ini:

Hal yang sama bisa juga dicapai menggunakan list comprehension berikut:

Contoh penggunaan list comprehension yang lebih rumit adalah menambahkan ekspresi kondisional .. if .. else .. di dalamnya.

Dalam kasus ini, urutan pernyataan dalam list comprehension akan sedikit berbeda dari kondisi if biasa. Hanya jika jika kamu memiliki kondisi if, kondisi tersebut masuk ke akhir dari comprehension. Tapi, dalam kasus ekspresi .. if .. else .., posisi loop for dan ekspresi kondisional ditukar. Urutan barunya adalah sebagai berikut:

Kita mulai dengan menulis ekspresi kondisional .. if .. else .. untuk mendapat kuadrat dari nilai genap dan pangkat tiga dari nilai ganjil dari sejumlah bilangan.

Ekspresi kondisional di atas memilki struktur berikut:

Memasukkan nilai-nilai berikut di posisi yang benar akan memberimu list comprehension berikut:

List Comprehension dalam Loop Bersarang

Kamu juga bisa menggunakan nested loop dalam list comprehension. TIdak ada batasan jumlah loop for yang bisa kamu simpan di dalam list comprehension. Tapi, kamu harus ingat urutan loop harus sama di kode awal dan di list comprehension. Kamu juga bisa menambahkan kondisi if tambahan setelah setiap loop for. Sebuah list comprehension dengan nested loop for akan memiliki struktur berikut:

Contoh berikut seharusnya membuat semuanya menjadi lebih jelas. Terdapat dua nested loop, dan mengalikan keduanya menghasilkan tabel perkalian.

Nested loop for tersebut bisa ditulis ulang sebagai:

Begitu kamu membuat loop dalam format ini, mengubahnya menjadi list comprehension mudah:

Kamu juga bisa menggunakan list comprehension yang serupa untuk meratakan list dari list. Loop for luar mengiterasi masing-masing list dan menyimpannya dalam variabel row. Loop for bagian dalam akan mengiterasi semua elemen di row saat ini. Saat iterasi pertama, variabel row akan memiliki nilai [1, 2, 3, 4]. Loop kedua mengiterasi ke dalam list ini atau row, dan menambahkan semua nilai tersebut ke list akhir.

Nested List Comprehension

Nested list comprehension mungkin terdengar mirip dengan list comprehension dengan nested loop, tapi sebenarnya sangat bebeda. Pada kasus pertama, kamu menangani loop di dalam loop. Dalam kasus ini, kamu akan menangani list comprehension di dalam list comprehension. Contoh penggunaan nested list comprehension yang baik misalnya membuat transpose dari matriks dari bagian sebelumnya.

Tanpa ekspresi list comprehension, kamu akan perlu menggunakan dua loop for untuk membuat transpose tersebut.

Loop luar mengiterasi ke dalam matriks empat kali karena ada empat kolom di dalamnya. Loop dalam mengiterasi elemen di dalam baris saat ini untuk tiap indeks dan menambahkannya ke list sementara bernama temp. List temp lalu ditambahkan sebagai baris di matriks yang ditranspose. Dalam kasus nested list comprehension, loop terluar ada di akhir dan loop paling dalam ada di awal.

Berikut adalah kode di atas dalam format list comprehension.

Cara lain untuk melihat ini adalah dengan mempertimbangkan struktur list comprehension yang menggantikan loop for yang kamu pelajari di awal artikel.

Jika kamu bandingkan dengan nested list comprehension di atas, kamu akan lihat bahwa <the_expression> dlaam kasus ini adalah list comprehension lain: [row[n] for row in matrix]. Nested list comprehension ini sendiri menggunakan format loop for dasar.

Penutup

Saya harap tutorial ini membantu kamu mengerti apa list comprehension dan bagaimana menggunakannya untuk menggantikan loop for dasar untuk menulis kode yang lebih rapi dan sedikit lebih cepat sambil membuat list.

Hal lain yang perlu kamu ingat adalah seberapa mudah dibaca kodemu. Membuat list comprehension untuk nested loop mungkin akan membuat kode tersebut lebih sulit dibaca. Dalam kasus tersebut, kamu bisa membagi list comprehension menjadi beberapa baris untuk membuatnya lebih mudah dibaca.

Sebagai tambahan, jangan ragu melihat apa yang kita punya dan bisa kamu pelajari di Envato Market, dan jangan ragu bertanya dan memberikan masukan yang berharga menggunakan fitur komentar di bawah.

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.