Struktur Data Python
Minggu kemarin saya menulis tentang dasar-dasar pemrograman Python, tulisan ini merupakan kelanjutan dari tulisan sebelumnya. Pada tulisan ini akan dibahas mengenai struktur data pada Python.
Struktur data berbicara mengenai suatu cara untuk menyimpan, menyusun, mengelompokkan dan merepresentasikan suatu data. Struktur data merupakan hal yang sangat penting dan wajib dikuasai oleh seorang programmer. Di forum-forum pemrograman, saya sering menjumpai pertanyaan-pertanyaan yang menurut saya bisa diselesaikan jika orang tersebut paham mengenai konsep struktur data. Dalam Python terdapat empat struktur data built-in yaitu List, Tuple, Dictionary, dan Set. Sebenarnya masih ada lagi, tapi menurut saya 4 struktur data tersebut yang paling penting dan sering digunakan.
List
List merupakan struktur data terurut (sequence). Setiap item dalam List memiliki sebuah index yang dimulai dari 0. List direpresentasikan dengan karakter square brackets []
. Mungkin terlihat mirip dengan Array pada bahasa pemrograman lain seperti Java, tapi List dalam Python bisa menampung berbagai tipe data. Berikut contoh sederhana List Python:
num_list = [1, 2, 3, 4, 5, 99, 0, -1]
char_list = ['a', 'b', 'c', 'd', 'ea', 'LT']
drink_list = ['milk', 'coffee', 1992, 0.34]
Untuk mengakses item dari suatu list, gunakan index dari item itu sendiri:
item = drink_list[1]
>>> coffee
Jika ingin mengubah isi dari suatu list, berikut caranya:
drink_list[2] = 'tea'
>>> ['milk', 'coffee', 'tea', 0.34]
Untuk menghapus isi suatu list ada tiga cara, masing-masing cara memiliki kegunaan tersendiri. yang pertama menggunakan keyword del
, yang kedua menggunakan function remove()
, yang ketiga menggunakan function pop()
. Untuk penjelasan perbedaannya perhatikan kode program dibawah ini:
foods = ['chicken', 'potato', 'steak', 'burger', 'sushi']
# remove item with index-0
del foods[0]
# remove item by specific item (raised an error when item not found)
foods.remove('sushi')
# remove the last item, and return it
last_food = foods.pop()
# remove item with index-1, and return it
foods.pop(1)
>>> ['potato']
Untuk menambahkan item baru ke suatu List, gunakan function append()
dan extend()
yang akan menambahkan item baru pada index terakhir. Jika ingin menambahkan item ke posisi index tertentu, gunakan insert()
. Berikut perbedaannya:
foods = ['chicken', 'steak']
# use insert(index, new_item) to add new item on specific index
foods.insert(1, 'potato')
>>> ['chicken', 'potato', 'steak']
# use append() to add new item (on last index)
foods.append('soup')
>>> ['chicken', 'potato', 'steak', 'soup']
foods.append(['sushi', 'burger'])
>>> ['chicken', 'potato', 'steak', 'soup', ['sushi', 'burger']]
# use extend() to add new items (on last index)
foods.extend(['sushi', 'burger'])
>>> ['chicken', 'potato', 'steak', 'soup', 'sushi', 'burger']
Jika ingin tahu berapa banyak item yang ada dalam suatu list, gunakan function len()
:
nums = [23, 11, 41]
nums_length = len(nums) # return List's size
>>> 3
Tuple
Tuple sebenarnya sama dengan List, perbedaannya adalah Tuple memiliki sifat immutable yang artinya tidak bisa dirubah bahkan dihapus. Sebuah Tuple direpresentasikan dengan karakter parentheses ()
. Berikut contohnya:
rooms = (4, 6, 1, 23, 7, 'secret room')
singleton = (3,) # to write a tuple containing single value, include a comma
# It is also possible to create a tuple without parentheses, by using commas
players = 23, 24, 11, 41, 'agent zero'
Meskipun demikian, Tuple memiliki beberapa keunggulan diantaranya:
- Tuple lebih cepat daripada List
- Bisa digunakan jika ingin melindungi suatu data, karena tidak bisa dirubah atau dihapus.
-
Tuple bisa digunakan sebagai keys pada Dictionary:
d = dict([('jan', 1), ('feb', 2), ('march', 3)]) print(d['march']) >>> 3
Ada beberapa hal yang menarik dari Tuple yang sangat berguna yaitu unpack (berlaku juga untuk List), seperti contoh berikut:
# Signing multiple values
(x, y, z) = 1, 2, 3
print(y)
>>> 2
# Tuple unpacking
nums = (1, 2, 3)
(a, b, c) = nums
print(c)
>>> 3
Dictionary
Dictionary merupakan struktur data yang berupa pasangan key-value. Setiap informasi yang disimpan pada Dictionary di petakan dengan satu key untuk mengakses informasi tersebut. Bahkan sebuah Dictionary bisa berisi Dictionary lain.
student = {
'name': 'Happy Indra Wijaya',
'age': 25,
'awesome': True,
'language': ['Java', 'Python', 'SQL'],
'favorites': {
'food': 'Indomie',
'sport': 'Basket'
}
}
Untuk mengakses data yang ada di dalam dictionary bisa menggunakan beberapa cara yaitu dengan get('key')
atau dengan menggunakan ['key']
. Namun yang membedakan dan perlu diperhatikan dari kedua cara tersebut adalah get('key')
akan return None
jika key tidak terdaftar, sedangkan cara ['key']
akan melempar exception KeyError.
name = student.get('name')
print(name)
>>> Happy Indra Wijaya
hobby = student.get('favorites')['sport']
print(hobby)
>>> Basket
address = student.get('address')
print(address)
>>> None
address = student['address']
print(address)
>>> KeyError: 'address'
Cara lain dari yang disebutkan di atas adalah dengan menggunakan for-each untuk mengakses Dictionary menggunakan perulangan. Dengan cara ini bisa mengakses key dari suatu Dictionary:
for key, val in student.items():
print(key)
>>> name
>>> age
>>> awesome
>>> language
>>> favorites
Set
Set merupakan struktur data yang memiliki kelebihan yaitu bersifat unique, jadi ketika kita memasukkan data yang sama pada Set, maka salah satu data itu akan di replace. Namun yang perlu diperhatikan bahwa struktur data Set juga bersifat unordered atau tidak berurut. Selain itu Set juga bersifat unindexed atau tidak memiliki index, sehingga kita tidak bisa mengakses salah satu data dari Set berdasarkan index tertentu.
foods = {'burger', 'pizza', 'soup', 'burger', 'milk'}
print(foods)
>>> {'soup', 'burger', 'milk', 'pizza'}
Kita bisa menambahkan data baru pada Set yang sudah ada dengan cara menggunakan perintah add()
atau update()
:
foods = {'burger', 'pizza', 'soup', 'burger', 'milk'}
foods.add('coffee')
foods.update(['sandwich', 'ice cream'])
print(foods)
>>> {'ice cream', 'coffee', 'burger', 'soup', 'pizza', 'milk', 'sandwich'}
Selain menambah data baru, kita juga bisa menghapus data pada Set. Ada beberapa cara yaitu menggunakan:
remove()
menghapus data x pada Set. Jika data x tidak ada di dalam Set maka muncul error KeyError.discard()
menghapus data x pada Set. Jika data x tidak ada di dalam Set maka tidak akan muncul error KeyError.pop()
menghapus data pertama dari Set, dan akan return data tersebut.
foods = {'burger', 'pizza', 'soup', 'burger', 'milk'}
foods.remove('pepsi') # >>> KeyError 'pepsi'
foods.discard('pizza')
print(foods.pop())
>>> milk