List Unpacking
List unpacking adalah fitur Python yang memungkinkan kita membongkar elemen-elemen dari sebuah list dan memasukkannya langsung ke beberapa variabel.
Dengan list unpacking, kita tidak perlu mengambil setiap elemen menggunakan index satu per satu.
1. Unpacking Dasar
Perhatikan list berikut:
numbers = [1, 2, 3]
Tanpa unpacking, kita dapat mengambil setiap elemen menggunakan index:
a = numbers[0]
b = numbers[1]
c = numbers[2]
print(a)
print(b)
print(c)
Dengan unpacking, penulisannya menjadi lebih sederhana:
a, b, c = [1, 2, 3]
print(a)
print(b)
print(c)
Hasil:
1
2
3
Python secara otomatis memetakan setiap elemen ke variabel berdasarkan posisinya.
2. Cara Kerja Unpacking
Misalnya:
a, b, c = [1, 2, 3]
Prosesnya dapat dibayangkan seperti:
a ← 1
b ← 2
c ← 3
Atau:
[1, 2, 3]
↓ ↓ ↓
a b c
Urutan elemen sangat penting.
Contohnya:
first, second, third = ["Python", "Java", "Kotlin"]
print(first)
print(second)
print(third)
Hasil:
Python
Java
Kotlin
3. Jumlah Variabel Harus Sesuai
Pada unpacking biasa, jumlah variabel harus sesuai dengan jumlah elemen yang akan dibongkar.
Contohnya:
a, b, c = [1, 2, 3]
Kode tersebut valid karena terdapat:
3 variabel
3 elemen
Namun:
a, b = [1, 2, 3]
akan menghasilkan error karena terdapat:
2 variabel
3 elemen
Sebaliknya:
a, b, c, d = [1, 2, 3]
juga akan menghasilkan error karena terdapat:
4 variabel
3 elemen
Untuk menangani jumlah elemen yang tidak tetap, kita dapat menggunakan operator *.
4. Unpacking dengan *
Python menyediakan operator:
*
dalam unpacking untuk menampung sisa elemen.
Contohnya:
a, b, *other = [1, 2, 3, 4, 5]
Hasilnya:
a → 1
b → 2
other → [3, 4, 5]
Jika ditampilkan:
print(a)
print(b)
print(other)
Hasil:
1
2
[3, 4, 5]
5. Variabel dengan * Selalu Mendapatkan List
Perhatikan:
a, b, *other = [1, 2, 3, 4, 5]
Nilai:
a
adalah:
1
Nilai:
b
adalah:
2
Sedangkan:
other
adalah:
[3, 4, 5]
Jadi variabel yang menggunakan * akan menampung sisa elemen dalam bentuk list.
6. Mengambil Elemen Awal dan Sisa Elemen
Contohnya:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a, b, c, *other = numbers
print(a)
print(b)
print(c)
print(other)
Hasil:
1
2
3
[4, 5, 6, 7, 8, 9]
Strukturnya:
1 → a
2 → b
3 → c
4 ─┐
5 │
6 │
7 ├──→ other
8 │
9 ─┘
7. Mengambil Elemen Awal dan Elemen Terakhir
Operator * juga dapat digunakan di antara variabel lainnya.
Contohnya:
a, b, *other, c = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a)
print(b)
print(other)
print(c)
Hasil:
1
2
[3, 4, 5, 6, 7, 8]
9
Prosesnya:
1 → a
2 → b
3 - 8 → other
9 → c
Dengan cara ini, kita dapat mengambil elemen awal dan akhir sekaligus menyimpan elemen di tengah.
8. Contoh dengan Data Pengguna
List unpacking tidak hanya digunakan dengan angka.
Misalnya:
user = ["Andi", 25, "Indonesia"]
name, age, country = user
print(name)
print(age)
print(country)
Hasil:
Andi
25
Indonesia
Setiap elemen langsung dimasukkan ke variabel yang sesuai.
9. Mengambil Data Tertentu dari List
Misalnya terdapat data:
scores = [90, 85, 80, 75, 70]
Kita hanya ingin mengambil dua nilai pertama dan menyimpan sisanya:
first, second, *remaining = scores
print(first)
print(second)
print(remaining)
Hasil:
90
85
[80, 75, 70]
10. Unpacking dengan * di Awal
Operator * juga dapat digunakan untuk mengambil sisa elemen di awal.
Contohnya:
*other, last = [1, 2, 3, 4, 5]
Hasil:
other → [1, 2, 3, 4]
last → 5
Contohnya:
print(other)
print(last)
Hasil:
[1, 2, 3, 4]
5
11. Unpacking di Tengah
Kita juga dapat menempatkan * di tengah.
Contohnya:
first, *middle, last = [1, 2, 3, 4, 5]
Hasil:
first → 1
middle → [2, 3, 4]
last → 5
Sehingga:
print(first)
print(middle)
print(last)
menghasilkan:
1
[2, 3, 4]
5
12. Unpacking Tidak Harus Menggunakan List
Konsep unpacking juga dapat digunakan pada sequence lainnya, seperti tuple.
Contohnya:
a, b, c = (1, 2, 3)
print(a)
print(b)
print(c)
Hasil:
1
2
3
Konsep dasarnya tetap sama:
Sequence
↓
Unpacking
↓
Beberapa variabel
13. Perbandingan dengan Indexing
Misalnya:
numbers = [10, 20, 30]
Menggunakan indexing:
first = numbers[0]
second = numbers[1]
third = numbers[2]
Menggunakan unpacking:
first, second, third = numbers
Unpacking membuat kode lebih ringkas dan menunjukkan secara langsung bagaimana setiap nilai dipetakan ke variabel.
14. Perbandingan dengan Slicing
Misalnya:
numbers = [1, 2, 3, 4, 5]
Dengan slicing:
first = numbers[0]
remaining = numbers[1:]
Dengan unpacking:
first, *remaining = numbers
Hasil keduanya secara konsep sama:
first → 1
remaining → [2, 3, 4, 5]
Namun unpacking dapat membuat tujuan kode lebih jelas ketika kita memang ingin memetakan data ke beberapa variabel.
15. Hal yang Perlu Diperhatikan
Operator * digunakan untuk menampung sisa elemen.
Contohnya:
a, *other = [1, 2, 3, 4]
maka:
a → 1
other → [2, 3, 4]
Jika tidak ada elemen yang tersisa:
a, *other = [1]
maka:
a → 1
other → []
Variabel other tetap berupa list.
16. Ringkasan Pola Unpacking
Unpacking biasa
a, b, c = [1, 2, 3]
Hasil:
a → 1
b → 2
c → 3
Mengambil elemen awal
a, *other = [1, 2, 3, 4]
Hasil:
a → 1
other → [2, 3, 4]
Mengambil elemen awal dan akhir
a, *other, b = [1, 2, 3, 4]
Hasil:
a → 1
other → [2, 3]
b → 4
Mengambil elemen terakhir
*other, last = [1, 2, 3, 4]
Hasil:
other → [1, 2, 3]
last → 4
Kesimpulan
List unpacking memungkinkan kita membongkar isi list dan memasukkannya langsung ke beberapa variabel.
Unpacking dasar:
a, b, c = [1, 2, 3]
Untuk menampung sisa elemen, gunakan:
*
Contohnya:
a, b, *other = [1, 2, 3, 4, 5]
Hasil:
a → 1
b → 2
other → [3, 4, 5]
Operator * sangat berguna ketika jumlah elemen yang ingin diambil secara langsung lebih sedikit daripada jumlah keseluruhan elemen.
List unpacking membuat pengambilan beberapa nilai dari sequence menjadi lebih ringkas dan mudah dibaca tanpa harus mengakses setiap elemen menggunakan index secara manual.