Modul Pembelajaran Interaktif • Pertemuan 06

Struktur Data Koleksi
List & Tuple di Python

Kuasai cara menyimpan, mengakses, mengiris (slicing), memanipulasi, dan menstrukturkan kumpulan data majemuk. Pelajari perbedaan mendalam antara List (Mutable) dan Tuple (Immutable), operasi multi-dimensi (Nested List / 2D Matrix), serta studi kasus rekap nilai mahasiswa interaktif.

Apa Itu List & Bagaimana Indexing Bekerja?

List adalah struktur data sekuensial (berurutan) di Python yang dapat menampung satu atau lebih elemen dengan tipe data heterogen.

Karakteristik Utama List

  • Tanda Kurung Siku: Dideklarasikan menggunakan simbol kurung siku [ ].
  • Ordered (Berurutan): Setiap elemen memiliki posisi tetap berdasarkan nomor indeks.
  • Mutable (Bisa Diubah): Elemen di dalam list bisa ditambah, dihapus, ditukar, atau diurutkan ulang.
  • Heterogen: Bisa berisi campuran integer, float, string, boolean, bahkan list lain (nested).
contoh_list.py
# Deklarasi berbagai macam list
list_angka = [200, 400, 600]
list_huruf = ["Hallo", "Hai", "UNM"]
list_campuran = [1, "Hallo", 3.14, True]

print(list_angka[0])  # Output: 200 (Indeks ke-0)
print(list_angka[-1]) # Output: 600 (Elemen terakhir)

Aturan Indexing Python (Positif & Negatif)

Python memiliki fitur istimewa yaitu Dual Indexing System. Anda bisa mengakses dari depan (mulai 0) maupun dari belakang (mulai -1).

Rumus Indeks Positif vs Negatif

• Indeks Positif (0 s/d n-1): Bergerak dari kiri ke kanan. Dimulai dari angka 0.
• Indeks Negatif (-1 s/d -n): Bergerak dari kanan ke kiri. Elemen paling ujung kanan selalu berindeks -1.

Visualisasi Memori List: bahasa = ['P', 'Y', 'T', 'H', 'O', 'N'] Klik sel untuk uji akses
Arahkan kursor atau klik kotak sel untuk melihat detail notasi indeksnya.

Teknik Mengiris Data: List Slicing

Slicing memungkinkan kita mengambil sub-bagian list dengan format jangkauan list[start : stop : step].

Sintaks Jangkauan [start : stop : step]

• start: Indeks awal pengambilan data (inklusif / ikut terambil).
• stop: Batas indeks akhir pengambilan (eksklusif / tidak ikut terambil).
• step: Interval loncatan antar elemen (default = 1).

Contoh Cepat Populer: data[:4] # Ambil 4 elemen pertama (0..3) data[2:] # Ambil dari indeks ke-2 sampai akhir data[::2] # Ambil elemen dengan langkah loncat 2 data[::-1] # Membalik urutan list (Reverse)
Interactive Slicing Simulator: data = [10, 20, 30, 40, 50, 60, 70, 80] data[1:6:1]
Hasil Output Python: [20, 30, 40, 50, 60]
Total Elemen Terpilih: 5 item

Operasi & Method Lengkap pada List

Python menyediakan segudang built-in methods canggih untuk menambah, menghapus, mengurutkan, dan menganalisis elemen list.

1. Menambahkan Elemen

  • append(x): Menambahkan data x di posisi paling akhir list.
  • insert(i, x): Menyisipkan data x pada indeks ke-i.
  • extend(list2): Menggabungkan seluruh elemen dari list lain.

2. Menghapus Elemen

  • remove(val): Menghapus data pertama yang bernilai val.
  • pop(i): Menghapus & mengembalikan elemen pada indeks i (default: terakhir).
  • clear(): Mengosongkan seluruh elemen list menjadi [].
  • del list[i]: Menghapus elemen berdasarkan indeks/slice.

3. Mengurutkan & Mencari

  • sort(): Mengurutkan elemen dari terkecil ke terbesar (Ascending).
  • sort(reverse=True): Mengurutkan dari terbesar ke terkecil (Descending).
  • reverse(): Membalik urutan data tanpa mengurutkan nilai.
  • index(x): Menemukan nomor indeks dari data x.
  • count(x): Menghitung jumlah kemunculan data x.

Interactive List Operations Lab

Uji coba langsung method manipulasi list di bawah. Perhatikan perubahan elemen di memori dan log eksekusinya secara real-time!

Kondisi List Saat Ini: ['Nasi Goreng', 'Mie Goreng', 'Kwetiau'] Panjang (len): 3 item
> Siap menjalankan operasi list.

Konsep Tuple: Mengapa Harus Immutable?

Tuple adalah struktur data berurutan seperti List, namun bersifat Immutable (tidak dapat diganggu gugat / tidak bisa diubah setelah dibuat).

Mengapa Kita Membutuhkan Tuple?

Meskipun terlihat mirip dengan List, Tuple memiliki peranan krusial dalam arsitektur perangkat lunak Python:

  • Data Integrity & Safety: Melindungi data konstan (koordinat GPS, konfigurasi server, dimensi layar, hari dalam seminggu) agar tidak sengaja termodifikasi oleh fungsi lain.
  • Performa Eksekusi Cepat: Tuple dialokasikan dalam satu blok memori statis sehingga jauh lebih cepat dan hemat memori dibanding List.
  • Dictionary Key: Tuple bersifat hashable sehingga dapat dijadikan kunci (key) pada Dictionary Python, sedangkan List tidak bisa.
Jebakan Single-Element Tuple!

Jika Anda ingin membuat Tuple yang hanya berisi 1 elemen, WAJIB menambahkan tanda koma , di belakangnya!
t = (50,) → Tipe Tuple
t = (50) → Tipe Integer (Python menganggapnya ekspresi kurung matematika biasa!)

Tabel Komparasi List vs Tuple

Kriteria List [ ] Tuple ( )
Sifat Mutable (Bisa diedit) Immutable (Terkunci)
Simbol Kurung siku [ ] Kurung biasa ( )
Ukuran Memori Dinamis & Lebih Besar Statis & Sangat Ringan
Method Banyak (append, pop, sort, dll) Sedikit (hanya count & index)
Kecepatan Standar Lebih Cepat (Optimized)

Coba Ubah Elemen Tuple (Simulasi Error)

Diberikan my_tuple = (100, 200, 300). Klik tombol di bawah untuk mencoba perintah my_tuple[0] = 999:

List Multi-Dimensi (Nested List / 2D Matrix)

Ketika sebuah list berisi list lain di dalamnya, kita membentuk struktur matriks berdimensi dua dengan konsep matrix[baris][kolom].

Konsep Baris dan Kolom Matriks

Untuk mengakses sel pada matriks 2D, indeks pertama menentukan nomor baris, dan indeks kedua menentukan nomor kolom.

matriks_2d.py
matriks = [
    [1, 2, 3],  # Baris indeks 0
    [4, 5, 6],  # Baris indeks 1
    [7, 8, 9]   # Baris indeks 2
]

# Mengakses angka 8 (Baris 2, Kolom 1)
print(matriks[2][1])  # Output: 8

# Mengubah angka 5 menjadi 50
matriks[1][1] = 50

Interactive 2D Matrix Grid Explorer

Klik salah satu kotak angka di bawah untuk melihat sintaks pemanggilan indeks baris & kolomnya!

Klik kotak matriks untuk memeriksa koordinat indeksnya.

Studi Kasus Akbar: Pengolahan Rekap Nilai Mahasiswa

Integrasi pengulangan (Looping) dengan struktur data List paralel untuk input, kalkulasi nilai total/rata-rata, dan cetak laporan ASCII tabel.

Logika Pemrosesan Data Paralel

Pada sistem akademik sederhana, kita menggunakan beberapa list penampung paralel:

  • list_nim = [] → Menyimpan string identitas mahasiswa.
  • list_uts = [] → Menyimpan nilai integer UTS.
  • list_uas = [] → Menyimpan nilai integer UAS.
  • list_total = [] → Menyimpan hasil kalkulasi (uts + uas) / 2.
rekap_nilai.py
# Loop kalkulasi nilai akhir
for i in range(jumlah_mhs):
    nilai_akhir = (list_uts[i] + list_uas[i]) / 2
    list_total.append(nilai_akhir)

# Cetak format tabel
print("==========================================")
print("NIM\t\tUTS\tUAS\tTotal\tGrade")
print("==========================================")

Simulator Input & Rekap Nilai Akademik

========================================================================================
No   NIM          Nama Mahasiswa        UTS     UAS     Total     Grade    Status
========================================================================================
Belum ada data mahasiswa yang dimasukkan. Silakan isi formulir di atas.
========================================================================================

Live Python Playground: List & Tuple

Uji coba sintaks Python secara langsung di browser Anda dengan fitur emulator interaktif.

Klik "Jalankan Kode" untuk mengeksekusi program.

Kuis Pemahaman: List & Tuple

Uji penguasaan Anda seputar mutabilitas, indexing, slicing, methods, dan matriks dua dimensi.

Pertanyaan 1 / 5 Skor: 0

Memuat pertanyaan kuis...

Poin Kunci & Roadmap Pembelajaran

Poin Penting Pertemuan 6

  • List: Bersifat mutable [ ], cocok untuk kumpulan data yang sering berubah.
  • Tuple: Bersifat immutable ( ), hemat memori, cepat, dan aman dari modifikasi.
  • Indexing: Dimulai dari 0 (positif) atau -1 (elemen paling belakang).
  • Nested List: Digunakan untuk representasi tabel atau matriks matematika data[row][col].

Materi Pertemuan 7: String & Bilangan

Pada modul selanjutnya, kita akan membedah manipulasi string tingkat lanjut (slicing string, formatting f-string, regex dasar, operasi matematika bilangan, dan persiapan Kuis UTS).

Lanjut ke Pertemuan 7 Buka Colab Review Kuis UTS