Appendix - List Comprehension
Reno Iqbalsah
15/05/2023
Bagian ini membahas cara membuat list yang lebih ringkas dengan menggunakan list comprehension dalam bahasa pemrograman Python.
Kalau diminta untuk membuat sebuah list
yang berisi angka 1 sampai 10, kode apa yang akan kalian buat? Cara yang paling
standard mungkin seperti di bawah ini.
new_list = []
for i in range(1,11):
new_list.append(i)
print(new_list) # output : [1,2,3,4,5,6,7,8,9,10]
Tahukah kalian bahwa kode di atas dapat kita ganti hanya dengan 1 baris kode saja?
List / Tuple / Set Comprehension
Comprehension sebenarnya tidak hanya dapat digunakan dalam list
saja, tetapi juga tipe data lain seperti tuple
, set
, dan bahkan dict
. Kita hanya perlu
menyatakan statement yang dibatasi []
untuk list
, ()
untuk tuple
, dan {}
untuk set
atau dict
.
Contohnya kita akan mengubah kode di atas dengan list comprehension, maka hasilnya adalah:
new_list = [x for x in range(1,11)]
print(new_list) # output : [1,2,3,4,5,6,7,8,9,10]
Kode di atas akan dieksekusi dengan sama persis seperti kode kita yang pertama tadi, tapi dengan lebih ringkas, sehingga dapat mempercepat waktu kita dalam coding. Hanya saja, notasi ini lebih cocok digunakan untuk statement yang sederhana, apabila kita membutuhkan statement yang rumit, maka akan lebih baik jika kita menggunakan for loop biasa.
Dictionary Comprehension
Kita dapat membuat dict
menggunakan comprehension dengan cara seperti di bawah ini, misalnya kita ingin membuat dict
dengan isi angka 1 sampai 3 sebagai key
dan
value
-nya adalah nilai key * 2
.
new_dict = {x : x*2 for x in range(1,4)}
print(new_dict)
# output : {1:2, 2:4, 3:6}
Pada kode di atas, dapat kita lihat bahwa notasi x
dan x * 2
dibatasi oleh tanda :
yang menyatakan pemisah antara key
dan value
.
Menggunakan Conditional Statement
Kita juga dapat menggunakan conditional statement dalam notasi comprehension. Misalnya kita ingin membuat list
berisi kelipatan angka 1 s.d. 10, dengan syarat:
- Angka ganjil dikalikan 3
- Angka genap dikalikan 2
Maka dapat kita tulis menjadi kode seperti di bawah ini:
kelipatan = [x*3 if x % 2 else x*2 for x in range(1,11)]
print(kelipatan)
# output : [3,4,9,8,15,12,21,16,27,20]
Conditional statement harus diletakkan di depan sebelum notasi for
loop, kita pun dapat menggunakannya tanpa kondisi else
.
Challenge: Text Cleansing
Diketahui alamat di bawah ini:
Jl.Naga Bonar nomor 15 RT 16/RW 26,Koja,Jakarta Utara
Dari alamat tersebut, akan kita cleansing dengan aturan seperti di bawah ini:
- Hapus seluruh tanda baca (gunakan library
string
seperti pada challenge sebelum ini) dan ganti menjadi spasi - Ubah semuanya menggunakan huruf kecil
- Gunakan maksimal 5 baris kode untuk menyelesaikan challenge ini.
Lihat jawabannya di sini:
Text cleansing sangat sering digunakan untuk analisis-analisis data berbentuk teks, terutama dalam Natural Language Processing (NLP) seperti dalam topic modelling atau sentiment analysis. Baca tulisan saya terkait NLP dalam jurnal ilmiah di sini dan repositori kode saya di account GitHub saya.