[Dasar Python]: Saring Data Lebih Baik Dengan Filter

Melanjutkan topik pembahasan tentang fungsi standar Python, kali ini kita akan belajar tentang fungsi filter(). Apa itu fungsi filter? dan bagaimana cara menggunakannya? Ikuti saja pembahasan kita berikut ini.

Fungsi filter()

Kegunaan: Menyaring data urutan berdasarkan fungsi Boolean dan menghasilkan data urutan lain dengan tipe yang sama.

Data yang dihasilkan dari fungsi filter() merupakan data yang benar (True) sesuai fungsi Boolean.

Syntax dari fungsi filter() sebagai berikut:
filter (fungsi_uji, urutan)

Contoh di bawah ini akan lebih memperjelas tentang penggunaan fungsi filter(),

# file: fungsi_filter.py
# python version: 2.6

# buat fungsi user-defined --> kabisat()
def kabisat(n):
  return n%4==0

# buat urutan data_tahun bertipe 'list'
data_tahun = []

# meminta masukan untuk memasukkan data tahun
pilihan = raw_input("Ingin input tahun (Y/N)? ")

# lakukan pengulangan while, sampai user
# memasukkan selain karakter Y.
while 1:
  # lakukan pengujian if, jika user meng-input Y/y
  if pilihan in ('y', 'Y'):
    # input tahun
    tahun = raw_input('Input data tahun: ')
    # masukkan input tahun ke list data_tahun
    data_tahun.append(int(tahun))
    # tawarkan input tahun yang lainnya
    pilihan = raw_input("Ingin input tahun lainnya (Y/N)? ")
  else:
    # jika user menginput selain Y/y, maka langsung
    # keluar dari pengulangan while
    break

# lakukan filter untuk memilih mana yang
# termasuk tahun kabisat, gunakan fungsi filter()
tahun_kabisat = filter(kabisat, data_tahun)

# tampilkan hasil filter tahun kabisat
print('Anda telah memasukkan %d tahun kabisat, yaitu \
%s' %(len(tahun_kabisat), tahun_kabisat))

Output dari kode program di atas seperti berikut ini,
Ingin input tahun (Y/N)? y
Input data tahun: 2000
Ingin input tahun lainnya (Y/N)? y
Input data tahun: 2001
Ingin input tahun lainnya (Y/N)? y
Input data tahun: 2002
Ingin input tahun lainnya (Y/N)? y
Input data tahun: 2003
Ingin input tahun lainnya (Y/N)? y
Input data tahun: 2004
Ingin input tahun lainnya (Y/N)? n
Anda telah memasukkan 2 tahun kabisat, yaitu [2000, 2004]

Kode program di atas juga bisa ditulis ulang menggunakan fungsi lambda, dan hasil tampilannya pun pasti sama.

# buat urutan data_tahun bertipe 'list'
data_tahun = []

# meminta masukan untuk memasukkan data tahun
pilihan = raw_input("Ingin input tahun (Y/N)? ")

# lakukan pengulangan while, sampai user
# memasukkan selain karakter Y.
while 1:
  # lakukan pengujian if, jika user meng-input Y/y
  if pilihan in ('y', 'Y'):
    # input tahun
    tahun = raw_input('Input data tahun: ')
    # masukkan input tahun ke list data_tahun
    data_tahun.append(int(tahun))
    # tawarkan input tahun yang lainnya
    pilihan = raw_input("Ingin input tahun lainnya (Y/N)? ")
  else:
    # jika user menginput selain Y/y, maka langsung
    # keluar dari pengulangan while
    break

# lakukan filter untuk memilih mana yang
# termasuk tahun kabisat, gunakan fungsi filter()
# memanggil lambda
tahun_kabisat = filter(lambda n:n%4==0, data_tahun)

# tampilkan hasil filter tahun kabisat
print('Anda telah memasukkan %d tahun kabisat, yaitu \
%s' %(len(tahun_kabisat), tahun_kabisat))

INFO PENTING :
*) Kode program di atas berjalan dengan sukses di Python versi 2.x.
*) Untuk menjalankannya di Python 3.x, kita harus merubah
tahun_kabisat = list(filter(lambda n:n%4==0, data_tahun))

Woke!…Selamat Belajar…Salam PythonMania!

2 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s