Part 2 — Struktur Data I: List & Dictionary

List, tuple, dictionary, set — membuat, indexing, slicing, modifikasi, serta NumPy array di Python.
Fundamental
Struktur Data
Diterbitkan

26 Februari 2026

Fundamental Series — Part 2 of 20

Python memiliki beberapa struktur data bawaan yang sangat penting. Part ini membahas list, tuple, dictionary, set, dan pengenalan NumPy array.


List: Koleksi Terurut & Fleksibel

List dibuat dengan tanda kurung siku []:

# List numerik
gdp = [45.2, 38.1, 52.7, 41.3, 88.6]

# List string
kota = ["Jakarta", "Bandung", "Surabaya"]

# List campuran (boleh multi-tipe!)
info = ["Andi", 22, True, 3.14]
CatatanPython List vs R Vector

List Python bisa menyimpan campuran tipe data — mirip list di R, bukan vektor. Untuk array satu tipe yang efisien, gunakan NumPy array (dibahas di bawah).

Membuat List dengan Pola

# range — mirip seq() di R
list(range(10))           # [0, 1, 2, ..., 9]
list(range(2, 11, 2))     # [2, 4, 6, 8, 10]

# Repetisi
[0] * 5                   # [0, 0, 0, 0, 0]

# List comprehension (cara Pythonic)
[x**2 for x in range(1, 6)]  # [1, 4, 9, 16, 25]

Indexing & Slicing

Python menggunakan index mulai dari 0:

x = [10, 20, 30, 40, 50]

# Akses satu elemen
x[0]       # 10 (elemen pertama!)
x[2]       # 30
x[-1]      # 50 (elemen terakhir)
x[-2]      # 40 (kedua dari terakhir)

Slicing: [start:stop:step]

x = [10, 20, 30, 40, 50]

x[1:4]     # [20, 30, 40] — index 1 sampai 3 (stop tidak termasuk)
x[:3]      # [10, 20, 30] — dari awal sampai index 2
x[2:]      # [30, 40, 50] — dari index 2 sampai akhir
x[::2]     # [10, 30, 50] — setiap 2 elemen
x[::-1]    # [50, 40, 30, 20, 10] — reversed
PeringatanIndex 0 vs Index 1
R Python
Elemen pertama x[1] x[0]
Elemen terakhir x[length(x)] x[-1]
Slice x[2:4] → elemen 2,3,4 x[1:4] → elemen index 1,2,3

Python: start inklusif, stop eksklusif.


Modifikasi List

x = [10, 20, 30, 40, 50]

# Ubah elemen
x[2] = 99         # [10, 20, 99, 40, 50]

# Tambah elemen
x.append(60)       # [10, 20, 99, 40, 50, 60]
x.insert(1, 15)    # sisipkan 15 di index 1

# Hapus elemen
x.remove(99)       # hapus nilai 99 (kemunculan pertama)
x.pop(0)           # hapus & kembalikan elemen index 0
del x[2]           # hapus elemen index 2

# Gabung list
a = [1, 2]
b = [3, 4]
a + b              # [1, 2, 3, 4]
a.extend(b)        # a menjadi [1, 2, 3, 4]

Tuple: List yang Tidak Bisa Diubah

Tuple dibuat dengan tanda kurung ():

koordinat = (106.8456, -6.2088)
warna_rgb = (255, 128, 0)

# Akses sama seperti list
koordinat[0]     # 106.8456

# Tapi TIDAK bisa diubah
koordinat[0] = 100  # TypeError!
TipKapan Pakai Tuple?

Gunakan tuple untuk data yang tidak boleh berubah — koordinat, konfigurasi, return value dari fungsi. Tuple juga sedikit lebih cepat dari list.


Dictionary: Key-Value Pairs

Dictionary menyimpan data sebagai pasangan kunci-nilai:

mahasiswa = {
    "nama": "Andi",
    "umur": 22,
    "nilai": [85, 90, 78],
    "lulus": True
}

# Akses dengan key
mahasiswa["nama"]      # 'Andi'
mahasiswa["nilai"]     # [85, 90, 78]

# Method get (lebih aman — tidak error jika key tidak ada)
mahasiswa.get("alamat", "N/A")  # 'N/A'

Modifikasi Dictionary

# Tambah / ubah
mahasiswa["jurusan"] = "Ekonomi"
mahasiswa["umur"] = 23

# Hapus
del mahasiswa["lulus"]

# Semua keys dan values
mahasiswa.keys()       # dict_keys([...])
mahasiswa.values()     # dict_values([...])
mahasiswa.items()      # dict_items([...])  → list of tuples

Set: Koleksi Unik

Set hanya menyimpan elemen unik, tidak berurutan:

angka = {1, 2, 3, 2, 1}   # {1, 2, 3}

# Operasi himpunan
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

a & b    # {3, 4} — intersection
a | b    # {1, 2, 3, 4, 5, 6} — union
a - b    # {1, 2} — difference

NumPy Array: Vektor untuk Data Science

Untuk komputasi numerik, gunakan NumPy array — mirip vektor di R:

import numpy as np

# Membuat array
x = np.array([10, 20, 30, 40, 50])

# Operasi vektorisasi (seperti R!)
x + 10       # array([20, 30, 40, 50, 60])
x * 2        # array([20, 40, 60, 80, 100])
x**2         # array([100, 400, 900, 1600, 2500])
np.sqrt(x)   # array([3.16, 4.47, 5.48, 6.32, 7.07])

Array vs List

# List: operasi + menggabungkan
[1, 2, 3] + [4, 5, 6]         # [1, 2, 3, 4, 5, 6]

# Array: operasi + menjumlahkan per elemen
np.array([1,2,3]) + np.array([4,5,6])  # array([5, 7, 9])

Fungsi Agregasi NumPy

x = np.array([10, 20, 30, 40, 50])

len(x)        # 5
np.sum(x)     # 150
np.mean(x)    # 30.0
np.min(x)     # 10
np.max(x)     # 50
np.std(x)     # 14.14 (ddof=0 default)
np.sort(x)    # array([10, 20, 30, 40, 50])

Boolean Indexing (seperti R)

x = np.array([10, 20, 30, 40, 50])

x[x > 25]              # array([30, 40, 50])
x[(x >= 20) & (x <= 40)]  # array([20, 30, 40])

Latihan

BahayaLatihan 2.1 — List
suhu = [28.5, 30.1, 27.8, 31.2, 29.0, 33.5, 26.4]

# 1. Berapa panjang list suhu?
# 2. Ambil elemen ke-2 sampai ke-5 (pakai slicing)
# 3. Ambil elemen terakhir dengan negative index
# 4. Tambahkan 29.8 di akhir list
# 5. Urutkan list dari kecil ke besar
BahayaLatihan 2.2 — Dictionary
# Buat dictionary berisi info provinsi:
# - nama: "Jawa Barat"
# - ibukota: "Bandung"
# - kabupaten: list 5 nama kabupaten
# - populasi: 48.27

# 1. Akses nama ibukota
# 2. Akses kabupaten ke-3
# 3. Tambahkan key baru: "luas" = 35377.76
# 4. Tampilkan semua keys
BahayaLatihan 2.3 — NumPy Array
import numpy as np
pendapatan = np.array([250, 150, 180, 120, 100])

# 1. Hitung rata-rata
# 2. Ambil elemen yang > 140
# 3. Kalikan semua elemen dengan 1000 (konversi ke ribu)
# 4. Hitung selisih max dan min

Ringkasan

Struktur Sintaks Karakteristik
list [1, 2, 3] Terurut, bisa diubah, multi-tipe
tuple (1, 2, 3) Terurut, TIDAK bisa diubah
dict {"a": 1} Key-value pairs
set {1, 2, 3} Unik, tidak terurut
np.array np.array([1,2,3]) Numerik, vektorisasi, efisien
Operasi List NumPy Array
+ Gabung Jumlah per elemen
* Repeat Kali per elemen
Boolean filter

Sebelumnya: Part 1 — Variabel & Tipe Data Selanjutnya: Part 3 — Struktur Data II: DataFrame