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).
# 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).
• 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.
bahasa = ['P', 'Y', 'T', 'H', 'O', 'N']
Klik sel untuk uji akses
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).
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)
data = [10, 20, 30, 40, 50, 60, 70, 80]
data[1:6:1]
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 dataxdi posisi paling akhir list.insert(i, x): Menyisipkan dataxpada indeks ke-i.extend(list2): Menggabungkan seluruh elemen dari list lain.
2. Menghapus Elemen
remove(val): Menghapus data pertama yang bernilaival.pop(i): Menghapus & mengembalikan elemen pada indeksi(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 datax.count(x): Menghitung jumlah kemunculan datax.
Interactive List Operations Lab
Uji coba langsung method manipulasi list di bawah. Perhatikan perubahan elemen di memori dan log eksekusinya secara real-time!
['Nasi Goreng', 'Mie Goreng', 'Kwetiau']
Panjang (len): 3 item
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.
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 = [ [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!
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.
# 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.
Kuis Pemahaman: List & Tuple
Uji penguasaan Anda seputar mutabilitas, indexing, slicing, methods, dan matriks dua dimensi.
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).