Part 6 — Kontrol Alur: Loop

for, while, break/continue, list comprehension, dan kapan menggunakan loop vs vektorisasi di Python.
Fundamental
Kontrol Alur
Diterbitkan

26 Februari 2026

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:
    k

enumerate — 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 9

List 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 ** 2

Kapan 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