Lebih Cepat dengan List Comprehension Python
Daftar Isi | |
---|---|
1. | Pengertian List Comprehension |
2. | List Comprehension Lebih Ringkas dan Cepat |
3. | Menggunakan Function pada List Comprehension |
3. | Menggunakan Condition pada List Comprehension |
Untuk melakukan kalkulasi pada semua elemen array atau list pada Python, biasanya digunakan for atau while loop. Dimana dilakukan kalkulasi bertahap untuk semua elemennya, kemudian dibuat sebuah list baru
Salah satu object array Python adalah list. Object ini menyediakan sebuah fitur yang lebih simple untuk melakukan penghitungan di atas, yang disebut sebagai List Comprehension.
Pengertian List Comprehension
List Comprehension adalah sebuah fitur pada list Python yang digunakan untuk membuat sebuah list baru dari elemen-elemen list yang sudah ada. Walaupun sama-sama ada kata for, list comprehension pada Python membutuhkan baris yang lebih sedikit.
Secara sederhana, syntax list comprehension pada Python dituliskan seperti berikut:
- stetment adalah statement yang dilakukan pada elemen list pertama yang sudah ada
- elemen adalah variabel yang mewakili elemen list pertama
- list_a adalah list yang sudah ada dan akan dibuat list baru
- conditions adalah kondisi yang diberikan untuk membatasi elemen list_a yang akan dimasukkan ke list_b. Jika where conditions dihilangkan, maka semua elemen list_a akan masuk ke list_b.
Sebagai contoh, misalkan ada list berisi [2, 3, 4, 5, 6], kemudian kita ingin membuat list baru yang isinya adalah kudrat dari elemen list tersebut, maka script Python nya:
2 list_b = [i**2 for i in list_a]
3 print(list_b)
Proses list comprehension terdapat pada baris ke 3. Sama seperti penjelasan sebelumnya, elemen dari list_a dimasukkan ke dalam variabel i, kemudian statemen yang digunakan adalah i**2. Sehingga dihasilkan list baru yang berisi kuadrat dari list lama
Karena tidak diberi condition, maka semua elemen dari list_a dihitung dan dimasukkan ke dalam list_b.
List Comprehension Lebih Ringkas dan Cepat
Berdasarkan contoh di atas, sudah jelas bahwa list comprehension lebih ringkas dibandingkan dengan for loop biasa. For loop setidaknya membutuhkan 2 baris untuk menjalankan statemen di atas.
Selain itu, menurut switowski, list comprehension pada Python juga lebih cepat untuk melakukan banyak kalkulasi. Python terkenal memiliki waktu kalkulasi yang lebih lama dibanding bahasa pemrograman yang lain. Karena itu, daripada menggunakan for loop standar, lebih baik menggunakan list comprehension.
Menggunakan Function pada List Comprehension
Setelah melihat contoh list comprehension di atas, tentunya bisa dipahami dan diaplikasikan. Tapi contoh di atas menggunakan statemen yang sederhana, bagiamana jika statemennya rumut?. Bukannya menjadi ringkas, rumitnya statemen justru akan membuat code list comprehension menjadi tidak terbaca.
Untuk mengakalinya, statemen bisa dibuat dulu ke dalam function, kemudian baru digunakan ke dalam list comprehension. Agar lebih jelas, berikut ini contoh script Python nya.
2 jum = 1
3 for i in range(1, n+1):
4 jum *= i
5
6 return jum
7
8 list_a = [1, 2, 3, 4, 5]
9
10 list_b = [factorial(i) for i in list_a]
11 print(list_b)
out:
[1, 2, 6, 24, 120]
Contoh di atas adalah menghitung faktorial dari elemen list_a. Penjelasannya kira-kira seperti ini:
- Statemen untuk menghitung faktorial membutuhkan beberapa baris, sehingga dibuat dulu sebuah function factorial pada baris ke-1.
- Kemudian list yang akan dihitung faktorialnya, list_a pada baris 8.
- Kemudian proses list comprehension nya pada baris ke 10. Beda dengan sebelumnya, statemen yang digunakan adalah function factorial dengan i sebagai inputnya.
Menggunakan Condition pada List Comprehension
Berdasarkan pengertian list comprehension yang dibahas sebelumnya, fitur Python ini dapat menggunakan condition. Tapi belum sempat dibahas pada contoh-contoh sebelumnya.
Berikut ini adalah contoh penggunaan condition pada list comprehension. Kita akan coba mengambil angka genap dari sebuah list. Yang artinya nanti di list yang baru hanya muncul angka genap saja. Script Pythonnya kira-kira seperti ini.
2
3 list_b = [i for i in list_a if i%2==0]
4 print(list_b)
out:
[2, 4, 6, 8]
Proses list comprehension di atas menggunakan tambahan if di belakangnya. Dan statement di belakang if adalah condition yang ditetapkan.
Condition yang digunakan adalah i%2==0, dimana i adalah elemen dari list_a, sama seperti sebelumnya. i%2==0 artinya, sisa pembagian i terhadap 2 adalah 0, atau syarat untuk bilangan genap.
Karena itu, elemen list_a yang masuk ke list_b adalah yang genap, dan karena statemen awalnya hanya i, maka tidak dilakukan apa-apa terhadap elemen yang disaring.
Sehingga dihasilkan list_b, yang berisi hanya 4 elemen yang merupakan elemen-elemen list_a yang memenuhi kondisi yang diberikan.
Posting Komentar untuk "Lebih Cepat dengan List Comprehension Python"