Belajar Python 6
Perulangan untuk Melihat Data di List atau Tuple

oleh: Suryo Adhy Chandra, ST

Ilustrasi iterasi list dan tuple

Iterasi adalah proses melihat atau mengambil data satu per satu dari kumpulan data. List dan tuple sama-sama bisa dibaca menggunakan perulangan for.

Menyimpan data di list atau tuple barulah separuh pekerjaan. Separuh lainnya adalah mengolah data itu: menjumlahkan nilai, mencari yang terbesar, menyaring yang memenuhi syarat, atau menampilkannya satu per satu. Bayangkan seorang guru yang memegang setumpuk lembar ujian. Ia tidak bisa menilai seluruhnya dalam satu pandangan; ia mengambil lembar paling atas, memeriksa, mencatat, lalu beralih ke lembar berikutnya sampai tumpukan habis. Itulah iterasi, dan for adalah alat yang membuat proses itu otomatis.

Di bab ini kita akan melangkah lebih jauh dari sekadar mencetak isi list. Kamu akan menghitung rata-rata, mencari nilai tertinggi, menyaring data dengan syarat, membaca dua list bersamaan, dan mengenal cara penulisan ringkas yang disebut list comprehension. Semua contoh bisa dipakai juga pada tuple karena cara kerjanya sama.

1. Iterasi data list

buah = ["apel", "jeruk", "mangga"] for item in buah: print(item)

Variabel item akan berisi data list satu per satu. Pertama berisi apel, lalu jeruk, lalu mangga.

2. Iterasi data tuple

hari = ("senin", "selasa", "rabu") for nama_hari in hari: print(nama_hari)

3. Menampilkan nomor urut dengan enumerate

Jika ingin menampilkan nomor urut, kita bisa memakai enumerate().

buah = ["apel", "jeruk", "mangga"] for nomor, item in enumerate(buah): print(nomor, item)
Karena index Python dimulai dari 0, hasil nomor pertama adalah 0. Jika ingin mulai dari 1, gunakan enumerate(buah, start=1).
for nomor, item in enumerate(buah, start=1): print(nomor, item)

4. Menghitung dengan data list

Gabungan perulangan dengan variabel penampung memungkinkan kita menghitung apa saja dari sebuah list. Contoh berikut menghitung rata-rata nilai dan mencari nilai tertinggi tanpa memakai fungsi bawaan, supaya kita paham logikanya.

nilai = [80, 95, 70, 88] total = 0 for n in nilai: total += n print("Rata-rata:", total / len(nilai)) tertinggi = nilai[0] for n in nilai: if n > tertinggi: tertinggi = n print("Tertinggi:", tertinggi)
Rata-rata: 83.25 Tertinggi: 95

Pada bagian pertama, setiap nilai ditambahkan ke total, lalu dibagi banyaknya data (4). Pada bagian kedua, kita anggap nilai pertama sebagai juara sementara. Setiap kali ada nilai yang lebih besar dari juara sementara, kita ganti juaranya. Setelah semua diperiksa, yang tersisa adalah nilai terbesar sesungguhnya.

5. Menyaring data dengan if

Di dalam perulangan, kita bebas memakai if untuk memilih data. Contoh berikut menentukan siapa yang lulus dengan batas nilai 75, lalu mengumpulkan nilai yang lulus ke dalam list baru.

nilai = [80, 95, 70, 88] lulus = [] for n in nilai: if n >= 75: print(n, "lulus") lulus.append(n) else: print(n, "remedial") print(lulus)
80 lulus 95 lulus 70 remedial 88 lulus [80, 95, 88]

List lulus dibuat kosong terlebih dulu, kemudian diisi memakai append() setiap kali ada nilai yang memenuhi syarat. Teknik "buat list kosong lalu isi lewat perulangan" sangat umum dalam pemrograman.

6. Memakai index dan membaca dua list sekaligus

Selain enumerate(), kita bisa memakai range(len(...)) untuk mendapatkan index. Jika ada dua list yang urutannya saling berpasangan, fungsi zip() membacanya bersamaan.

buah = ["apel", "jeruk", "mangga"] for i in range(len(buah)): print(i, buah[i]) nama = ["Budi", "Sinta", "Dina"] skor = [80, 95, 70] for a, b in zip(nama, skor): print(a, b)
0 apel 1 jeruk 2 mangga Budi 80 Sinta 95 Dina 70

len(buah) bernilai 3 sehingga range(3) menghasilkan index 0, 1, 2. Sedangkan zip() memasangkan data ke-1 dari kedua list, lalu data ke-2, dan seterusnya. Jika panjang kedua list berbeda, perulangan berhenti mengikuti list yang lebih pendek.

7. List comprehension: cara singkat membuat list

Pola "buat list kosong, ulangi, lalu append" bisa dipadatkan menjadi satu baris yang disebut list comprehension. Bentuknya [ekspresi for variabel in data].

kuadrat = [n * n for n in [1, 2, 3, 4]] print(kuadrat)
[1, 4, 9, 16]
Jika kamu masih pemula, boleh saja tetap memakai perulangan biasa. List comprehension hanyalah singkatan, bukan keharusan. Gunakan yang paling mudah kamu pahami.

8. Kesalahan yang sering terjadi

Mengulang sesuatu yang bukan kumpulan data. Menulis for x in 5: menghasilkan TypeError: 'int' object is not iterable. Gunakan range(5) jika ingin mengulang lima kali.
Index melebihi batas. Pada for i in range(len(l) + 1), putaran terakhir mengakses data yang tidak ada dan menghasilkan IndexError: list index out of range. Cukup pakai range(len(l)).
Mencampur angka dan teks. Pada list [1, 2], perintah x + 'a' menghasilkan TypeError: unsupported operand type(s) for +: 'int' and 'str'. Ubah dulu angkanya dengan str(x).

9. Ringkasan

10. Latihan

  1. Cetak setiap nama dalam list ["Ani", "Budi", "Citra"] dengan kata "Halo" di depannya.
    Lihat jawaban
    for nama in ["Ani", "Budi", "Citra"]: print("Halo", nama)
    Keluarannya tiga baris: Halo Ani, Halo Budi, Halo Citra.
  2. Hitung jumlah semua angka pada tuple (4, 8, 15, 16, 23, 42).
    Lihat jawaban
    total = 0 for n in (4, 8, 15, 16, 23, 42): total += n print(total)
    Keluarannya 108.
  3. Dari [3, 8, 12, 5, 20], cetak hanya angka yang lebih besar dari 7.
    Lihat jawaban
    for n in [3, 8, 12, 5, 20]: if n > 7: print(n)
    Keluarannya 8, 12, 20 masing-masing di baris baru.
  4. Buat list baru berisi angka-angka dari [1, 2, 3] yang sudah dikalikan 10, memakai list comprehension.
    Lihat jawaban
    hasil = [n * 10 for n in [1, 2, 3]] print(hasil)
    Keluarannya [10, 20, 30].
← Kembali Ke Daftar Pelajaran Python #1