
Belajar Python 6
Perulangan untuk Melihat Data di List atau Tuple
oleh: Suryo Adhy Chandra, ST
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
Variabel item akan berisi data list satu per satu. Pertama berisi apel, lalu jeruk, lalu mangga.
2. Iterasi data tuple
3. Menampilkan nomor urut dengan enumerate
Jika ingin menampilkan nomor urut, kita bisa memakai enumerate().
enumerate(buah, start=1).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.
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.
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.
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].
8. Kesalahan yang sering terjadi
for x in 5: menghasilkan TypeError: 'int' object is not iterable. Gunakan range(5) jika ingin mengulang lima kali.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)).[1, 2], perintah x + 'a' menghasilkan TypeError: unsupported operand type(s) for +: 'int' and 'str'. Ubah dulu angkanya dengan str(x).9. Ringkasan
- Perulangan
formembaca list dan tuple satu per satu dengan cara yang sama. - Variabel penampung menghitung total; pembanding menemukan nilai terbesar atau terkecil.
ifdi dalam perulangan dipakai untuk menyaring data.enumerate()memberi nomor urut,zip()membaca dua list berpasangan.
10. Latihan
- 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. - 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)Keluarannya108. - 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)Keluarannya8,12,20masing-masing di baris baru. - 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].