Fundamental Series — Part 6 of 20
Loop menjalankan blok kode berulang kali. Python memiliki for dan while, plus list comprehension sebagai cara yang lebih Pythonic.
for Loop
for i in range(5):
i
# 0 1 2 3 4 (range mulai dari 0!)Loop Over Collection
kota = ["Jakarta", "Bandung", "Surabaya"]
for k in kota:
kenumerate — Index + Value
for i, k in enumerate(kota):
f"{i}: {k}"
# '0: Jakarta' '1: Bandung' '2: Surabaya'zip — Loop Paralel
nama = ["Jakarta", "Bandung"]
populasi = [10.56, 2.44]
for n, p in zip(nama, populasi):
f"{n}: {p} juta"while Loop
x = 1
while x <= 5:
x
x += 1
PeringatanHati-hati Infinite Loop!
Pastikan variabel kondisi berubah di dalam loop. Tekan Ctrl+C atau interrupt kernel untuk menghentikan.
break dan continue
# break — hentikan loop
for i in range(10):
if i == 5:
break
i
# 0 1 2 3 4
# continue — lewati iterasi saat ini
for i in range(10):
if i % 2 == 0:
continue # lewati genap
i
# 1 3 5 7 9List Comprehension
Cara Pythonic untuk membuat list dari loop:
# Loop biasa
kuadrat = []
for x in range(1, 6):
kuadrat.append(x**2)
# List comprehension — satu baris!
kuadrat = [x**2 for x in range(1, 6)]
# [1, 4, 9, 16, 25]Dengan Kondisi
# Hanya bilangan genap
genap = [x for x in range(20) if x % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# Dengan transformasi kondisional
label = ["genap" if x % 2 == 0 else "ganjil" for x in range(5)]
# ['genap', 'ganjil', 'genap', 'ganjil', 'genap']Dict & Set Comprehension
# Dict comprehension
kuadrat_dict = {x: x**2 for x in range(1, 6)}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Set comprehension
unik = {x % 3 for x in range(10)}
# {0, 1, 2}Loop vs Vektorisasi
Untuk data numerik, NumPy/pandas jauh lebih cepat:
import numpy as np
x = np.arange(1_000_000)
# ❌ Loop — lambat
hasil = []
for val in x:
hasil.append(val ** 2)
# ✅ Vektorisasi — cepat
hasil = x ** 2Kapan Pakai Loop?
- Logika kompleks yang sulit divektorisasi
- Side effects (baca/tulis file, API calls)
- Iterasi dengan dependensi antar-step
Loop Over DataFrame
import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
# Loop per kolom
for col in df.columns:
df[col].mean()
# Loop per baris (gunakan sparingly — lambat!)
for idx, row in df.iterrows():
row["a"] + row["b"]
PeringatanHindari
.iterrows() untuk Data Besar
iterrows() sangat lambat. Gunakan vektorisasi: df["c"] = df["a"] + df["b"].
Latihan
BahayaLatihan 6.1 — For Loop
# 1. Cetak bilangan 1-20 yang habis dibagi 3
# 2. Hitung jumlah (sum) bilangan 1-100 menggunakan loop
# Verifikasi dengan sum(range(1, 101))
BahayaLatihan 6.2 — List Comprehension
# 1. Buat list berisi kuadrat bilangan 1-10
# 2. Buat list berisi bilangan ganjil dari 1-50
# 3. Buat dict: {nama_kota: len(nama_kota)} untuk 5 kota
BahayaLatihan 6.3 — While Loop
import random
random.seed(42)
# Simulasi: mulai dengan saldo = 1000
# Setiap iterasi, saldo dikali random.uniform(0.8, 1.2)
# Hentikan ketika saldo < 500 atau > 2000
# Berapa iterasi yang diperlukan?Ringkasan
| Konsep | Sintaks | Keterangan |
|---|---|---|
for |
for x in iterable: |
Loop over collection |
range() |
range(start, stop, step) |
Generator angka |
enumerate() |
for i, x in enumerate(lst): |
Index + value |
zip() |
for a, b in zip(x, y): |
Loop paralel |
while |
while cond: |
Loop sampai False |
break / continue |
Hentikan / lewati | |
| List comprehension | [expr for x in lst] |
Loop Pythonic |
| Vektorisasi | np.array * 2 |
Cepat untuk numerik |
Sebelumnya: Part 5 — Conditional Selanjutnya: Part 7 — Fungsi