Soal 1Apa yang dicetak kode ini?for i in range(2, 6):
print(i)
Loop for dengan range / enumerate / zip
Pelajari loop for di Python untuk mengiterasi list, string, dan dict, lalu kombinasikan dengan range / enumerate / zip.
Sejauh ini kita sudah belajar percabangan dengan if / elif dan pemeriksaan massal dengan all() / any().
Di artikel ini, kamu akan menguasai pernyataan for untuk menjalankan pekerjaan yang sama pada setiap elemen di sebuah list. Dengan if dan for di kotak peralatanmu, kamu bisa menulis sebagian besar kode praktis sehari-hari.
Mengambil satu elemen sekaligus dengan for
Pernyataan for mengambil objek yang bisa diulang (iterable) seperti list, tuple, string, atau dict, lalu mengambil elemen satu per satu dari awal, mengikat masing-masing ke variabel yang kamu sebut dan menjalankan blok-mu setiap kali.
Bentuk dasarnya adalah satu baris for variabel in iterable: plus blok yang diberi indentasi 4 spasi.
Ambil satu elemen dari koleksi → tetapkan ke variabel → jalankan blok → lanjut ke berikutnya, ulangi sampai elemen habis.
# Loop pada sebuah list
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)
# Output:
# apple
# banana
# orange
# String juga iterable (satu karakter sekali)
for ch in "ABC":
print(ch)
# Mencetak A / B / C secara berurutan
Jangan lupa titik dua dan indentasi 4 spasi
Baris for harus diakhiri dengan : (titik dua), dan setiap baris blok harus diberi indentasi 4 spasi (atau satu tab). Indentasi yang tidak cocok memunculkan IndentationError.
Loop pada sebuah dict dengan for
Jika kamu meneruskan dict ke for secara langsung, hanya key yang diambil bergiliran. Untuk juga mendapatkan value-nya, .items() adalah pilihan yang umum. Jika kamu hanya butuh value, pakai .values().
| Bentuk | Yang kamu dapat | Penggunaan umum |
|---|---|---|
| for key in d: | key | Ketika key saja sudah cukup |
| for value in d.values(): | value | Ketika kamu hanya butuh value untuk agregasi |
| for key, value in d.items(): | pasangan key/value | Ketika kamu butuh keduanya — untuk tampilan terformat atau penyaringan |
user = {"name": "budi", "age": 29, "role": "admin"}
# Hanya key
for key in user:
print(key)
# name / age / role
# Hanya value
for value in user.values():
print(value)
# budi / 29 / admin
# Key dan value bersama
for key, value in user.items():
print(f"{key}: {value}")
# name: budi / age: 29 / role: admin
Mengulang sejumlah kali tetap dengan range()
range(n) adalah fungsi built-in yang mengembalikan sequence integer dari 0 sampai n-1, dan digabung dengan for ini cara andalan untuk menulis loop dengan jumlah tetap. Ada 3 cara umum untuk memanggilnya.
| Bentuk | Nilai yang dihasilkan | Penggunaan |
|---|---|---|
| range(5) | 0, 1, 2, 3, 4 | 0 sampai n-1 |
| range(2, 8) | 2, 3, 4, 5, 6, 7 | Tentukan awal dan akhir (akhir eksklusif) |
| range(1, 10, 2) | 1, 3, 5, 7, 9 | Tentukan awal, akhir, dan langkah |
# Loop 0 sampai 4
for i in range(5):
print(i)
# Mencetak 0 1 2 3 4 (5 baris)
# 2 sampai 7
for i in range(2, 8):
print(i)
# 1 sampai 9 dengan langkah 2
for i in range(1, 10, 2):
print(i)
# Pakai _ ketika kamu hanya butuh hitungan, bukan value
for _ in range(3):
print("coba ulang...")
Memberi nama variabel loop _ (garis bawah) adalah konvensi untuk langsung memberi sinyal "variabel ini tidak dipakai di dalam". i atau j akan tetap bekerja, tapi membaca kode di mana keduanya tidak pernah dipakai membuat pembaca berhenti dan bertanya kenapa — jadi pakai _ ketika kamu hanya peduli pada hitungan.
enumerate dan zip untuk indeks dan list paralel
Di kode dunia nyata, kamu sering menginginkan posisi setiap elemen juga, atau kamu ingin iterasi pada beberapa list secara paralel. enumerate() dan zip() membuat hal-hal ini jauh lebih ringkas dan mudah dibaca.
enumerate() — loop dengan indeks
Membungkus list dalam enumerate(list) memberimu pasangan (indeks, elemen) secara berurutan. Berguna untuk tampilan peringkat atau menampilkan nomor baris dalam pesan error — di mana saja kamu ingin menempelkan "yang mana" ke setiap nilai.
products = ["apple", "bread", "milk"]
for index, name in enumerate(products):
print(f"{index}: {name}")
# 0: apple
# 1: bread
# 2: milk
# Untuk mulai dari 1, teruskan start sebagai argumen kedua
for rank, name in enumerate(products, 1):
print(f"#{rank}: {name}")
# #1: apple / #2: bread / #3: milk
zip() — iterasi beberapa list secara paralel
zip(list1, list2, ...) memungkinkanmu mengambil elemen pada indeks yang sama bersama-sama dari beberapa list. Ia berhenti ketika list terpendek habis, jadi aman bahkan dengan panjang yang tidak cocok.
names = ["Budi", "Siti", "Ayu"]
scores = [82, 91, 65]
for name, score in zip(names, scores):
print(f"{name}: {score} poin")
# Budi: 82 poin / Siti: 91 poin / Ayu: 65 poin
Mengontrol loop dengan break dan continue
Sering ada keinginan untuk berhenti karena sudah menemukan yang dibutuhkan atau melewati hanya iterasi ini. Yang pertama memakai break untuk meninggalkan loop segera; yang kedua memakai continue untuk melewati sisa iterasi ini dan pindah ke elemen berikutnya.
break mengakhiri loop itu sendiri, jadi sisa elemen tidak dievaluasi sama sekali. continue hanya melewati sisa iterasi ini dan pindah ke elemen berikutnya — loop secara keseluruhan tetap berjalan. Keduanya biasanya dipanggil dari dalam sebuah if.
# break: berhenti segera setelah menemukan target
users = ["budi", "siti", "ayu", "deni"]
for name in users:
if name == "ayu":
print("Ditemukan")
break
print(f"memeriksa: {name}")
# memeriksa: budi / memeriksa: siti / Ditemukan
# continue: lewati 0 ketika menjumlahkan
scores = [80, 0, 65, 0, 91]
total = 0
for score in scores:
if score == 0:
continue
total += score
print(total) # 80 + 65 + 91 = 236
Di artikel ini, kita membahas gambaran besar for: iterasi pada list dan dict, menghitung dengan range(), memperluas dengan enumerate() / zip(), dan mengontrol alur dengan break / continue.
Di artikel berikutnya, kita akan melihat loop while — dipakai untuk mengulang ketika kamu tidak tahu hitungannya di awal — dan cara menghindari loop tak terbatas.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Ketika kamu memperluas enumerate(['a', 'b', 'c'], 1) dengan for, pasangan apa yang dihasilkan?
Soal 3Apa yang dicetak kode ini?nums = [1, 2, 3, 4, 5]
for n in nums:
if n == 3:
continue
print(n)