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:

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:

Lihat jawabannya di sini:

Jawaban Challenge Text Cleansing

    
import string alamat = "Jl.Naga Bonar nomor 15 RT 16/RW 26,Koja,Jakarta Utara" cleaned ="".join([char.lower() if char not in string.punctuation else " " for char in alamat]) print(cleaned)

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.