← Kembali ke kursus
Pelajaran kursus · Python
Pelajaran 39

Iterable dan iterator

Protokol di balik for loop: __iter__ dan __next__.

Pahami konsepnya

Iterable adalah objek yang bisa di-loop: list, string, dict, file — semua iterable. Iterator adalah objek yang MELAKUKAN iterasi: punya __next__() yang mengembalikan elemen berikutnya dan melempar StopIteration saat habis. iter() mengubah iterable jadi iterator; next() maju satu langkah.

For loop Python bekerja lewat protokol ini: ia memanggil iter() pada objek, lalu next() berulang sampai StopIteration. Memahaminya membuka pemahaman generator, comprehension, dan zip/enumerate/map — semuanya dibangun di atasnya.

Zip dan enumerate adalah iterator yang paling sering dipakai: zip(a, b) memasangkan dua list, enumerate(a) memberi indeks+elemen. Keduanya lazy — elemen dihasilkan saat diminta, bukan disimpan di memori.

Coba contoh kode

angka = [10, 20, 30]
it = iter(angka)
print(next(it))  # 10
print(next(it))  # 20
print(next(it))  # 30
# next(it) lagi akan melempar StopIteration

# zip: pasangkan dua list
nama = ["andi", "budi", "citra"]
nilai = [85, 92, 78]
for n, s in zip(nama, nilai):
    print(f"{n}: {s}")

iter() mengambil iterator dari list; next() maju satu elemen per panggilan. Setelah elemen ketiga, panggilan keempat melempar StopIteration — sinyal habis yang ditangkap for loop secara otomatis. zip memasangkan dua list sejajar tanpa indeks manual.

Latihan singkat

Uji: zip 2 list ke dict — harus `{'a': 1, 'b': 2, 'c': 3}`.