Skip to main content

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.

info

List unpacking membuat pengambilan beberapa nilai dari sequence menjadi lebih ringkas dan mudah dibaca tanpa harus mengakses setiap elemen menggunakan index secara manual.