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]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| 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!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 tuplesSet: 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} — differenceNumPy 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
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# 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 keysimport 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 minRingkasan
| 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