Modul 1: Pengenalan dan Review Struktur Data - fzl-22/modul-alstrukdat-sainsdata GitHub Wiki
Struktur data adalah format yang digunakan untuk menyimpan data-data dalam bentuk tertentu sehingga dapat diakses, diproses, dan disimpan dengan efisien sesuai dengan kebutuhan dan jenis datanya.
Gambar di bawah ini menunjukkan beberapa struktur data secara umum: Sumber: www.scaler.com
Pada semester 1, kita telah mempelajari struktur data primitif (atau biasa disebut dengan tipe data). Pada semester ini, kita akan mempelajari struktur data non-primitif (atau biasa disebut dengan struktur data saja). Struktur data ini terbagi menjadi dua, yaitu:
- struktur data linear: struktur data yang tersusun dalam urutan linear dan tanpa hierarki. Contohnya dalam dunia nyata adalah buku-buku dalam sebuah rak buku, benda-benda dalam antrian, dan kamar-kamar pada sebuah gedung apartemen atau hotel.
- struktur data non-linear: struktur data yang tidak tersusun dalam urutan linear. Struktur data ini bisa tersusun dalam hierarki ataupun percabangan tertentu. Dalam dunia nyata, contohnya adalah silsilah keluarga dan alamat-alamat bangunan pada Google Map.
Struktur data perlu kita pelajari karena beberapa alasan berikut:
- Struktur data memudahkan programmer untuk menyimpan data-data dengan kriteria tertentu.
- Algoritma tertentu membutuhkan struktur data tertentu agar bisa digunakan.
- Dan yang perlu diperhatikan, pemilihan struktur data sangat mempengaruhi efisiensi performa kode program, baik dalam hal efisiensi waktu maupun efisiensi memory.
Sehingga, pemilihan algoritma dan struktur data yang tepat untuk menyelesaikan suatu masalah dapat mempengaruhi keoptimalan kode program yang sedang kita buat.
Sumber: www.scaler.com
Secara default, Python menyediakan beberapa struktur data berikut secara built-in:
- List
- Dictionary
- Tuple
- Set
Namun, kita juga bisa membuat sendiri struktur data (user-defined) lain dengan menggunakan struktur data built-in, seperti:
- Stack
- Queue
- Tree
- Linked List
- Graph
- HashMap
Sebagai contoh, struktur data Graph dapat diimplementasikan menggunakan List maupun Array (Array tidak disediakan secara built-in, namun kalian wajib mempelajarinya lebih detail di sini)
List merupakan salah satu jenis tipe data yang dimiliki oleh python. Berbeda dengan jenis tipe data lainnya, list memungkinkan variabel untuk dapat menampung lebih dari satu data di dalamnya. Selain dapat menampung lebih dari satu data, data-data yang dapat disimpan di dalam variabel list tersebut dapat terdiri dari berbagai jenis tipe data.
Data dalam list dapat digambarkan seperti di atas. Angka dalam kotak adalah elemen-elemen (atau data) yang disimpan oleh list. Untuk mengakses elemen tertentu dalam list, maka setiap elemen memiliki alamat yang disebut dengan index
yang dimulai dari 0 (dalam positive index). Misalnya, jika kita ingin mengakses index 3, maka kita akan mendapatkan nilai 10. Apabila terdapat
Untuk mendeklarasikan atau membuat sebuah list dapat dilakukan dengan cara berikut :
NamaList1 = [] # List Kosong
NamaList = [data1,data2,data3]
Dapat dilihat di dalam penulisan di atas untuk membuat sebuah list maka dapat dituliskan seperti penulisan variabel biasa tetapi yang membedakan adalah value pada assigment operation
diawali dengan tanda [
dan ditutup dengan tanda ]
. Kemudian, di antara tanda []
dapat dituliskan data-data yang ingin disimpan di dalam variabel list tersebut.
Berikut contoh kode program deklarasi List :
IniList = [1,"satu",1.5,"satu koma lima",2]
print(IniList)
Output :
[1, 'satu', 1.5, 'satu koma lima', 2]
Selain mendeklarasikan nilai list dengan cara biasa seperti di atas, ada beberapa metode lain yang dapat digunakan untuk melakukan pemberian data yang ditampung di dalam list. Contoh dari metode tersebut dapat dilihat di kode program di bawah ini :
# Menggunakan Constructor
IniList2 = list((1, 2, 3, 4, 5, 'a', 'b', 'c', 'd'))
print(IniList2)
# menggunakan looping
IniList = [i for i in range(0, 10)]
print(IniList)
IniList = [i for i in "apakabar kalian semua"]
print(IniList)
# ditambahkan if
IniList = [i for i in range(0, 10) if i % 2 == 0]
print(IniList)
Output :
[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
['a', 'p', 'a', 'k', 'a', 'b', 'a', 'r', ' ', 'k', 'a', 'l', 'i', 'a', 'n', ' ', 's', 'e', 'm', 'u', 'a']
[0, 2, 4, 6, 8]
List memiliki sifat seperti string yaitu setiap element atau data di dalam list tersebut memiliki identitas berupa index yang dimulai dari 0. Sehingga dengan menggunakan index kita dapat melakukan pengaksesan data list berdasarkan indexnya seperti contoh di bawah ini :
IniList = [1,"satu",1.5,"satu koma lima",2]
print(IniList[0])
print(IniList[2])
print(IniList[3])
Output :
1
1.5
satu koma lima
Selain hanya mengakses satu demi satu, kita juga bisa mengakses beberapa elemen sekaligus dengan menggunakan list slicing. List slicing adalah fitur dalam Python yg sering digunakan untuk menampilkan data dari list dalam range tertentu. Formatnya adalah sebagai berikut:
arr = [1, 7, 8, 9, 10, 99]
print(arr[<start>:<stop>:<step>]) # akses list mulai dari <start> hingga <stop>, dengan loncatan <step>
# start memiliki nilai default 0
# stop memiliki nilai default index terakhir list
# step memiliki nilai default 1
Dengan format di atas, kita bisa mengakses list seperti di bawah ini:
arrInt = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
print(arrInt[::]) # mengakses setiap elemen dalam list
print(arrInt[1:5]) # mengakses setiap elemen dari index 1 hingga index 5
print(arrInt[2:9:3]) # mengakses mulai dari index 2 hingga index 9 dengan lompatan 3 index
List juga dapat diakses dengan menggunakan looping melalui setiap elemennya ataupun indeksnya:
IniList = ['a', 'b', 'c', 'd', '1', '2', '3']
for i in IniList: # berdasarkan elemen list
print(i)
for i in range(len(IniList)): # berdasarkan index
print(IniList[i])
Output :
a
b
c
d
1
2
3
Selain dapat menampung data dengan tipe data di atas list juga dapat menampung list lain. Contoh dari penerapannya dapat dilihat pada kode program berikut :
IniList = [[1, 2], ['a', 'b'], [3, [4, 5]]]
print(IniList[0][0])
print(IniList[1][0])
print(IniList[2][0])
print(IniList[2][1][1])
Output :
1
a
3
5
Dapat dilihat pada kode program di atas untuk melakukan pengaksesan data list di dalam list maka diperlukan index tambahan. Dalam hal ini list tersebut baisa disebut list 2,3,hingga n dimensi.
List memiliki banyak fungsi atau method yang dapat digunakan untuk melakukan manipulasi terhadap data di dalam list. Berikut merupakan beberapa fungsi yang dimiliki oleh list
Fungsi | Penulisan | Deskripsi |
---|---|---|
append | NamaList.append(nilai) | Menambahkan data nilai pada list |
len | len(NamaList) | Mencari panjang atau banyak data yang dimiliki list |
sum | sum(NamaList) | Menghitung jumlah dari semua elemen dalam list |
min | min(NamaList) | Mengembalikan nilai terkecil dalam list |
max | max(NamaList) | Mengembalikan nilai terbesar dalam list |
insert | NamaList.insert(index,nilai) | Menambahkan nilai di index yang dipilih |
remove | NamaList.remove(nilai) | Menghapus nilai tertentu di dalam list |
pop | NamaList.pop() | Mengapus data terakhir di list |
extend | NamaList.extend(listLain) | Menambahkan sebuah list ke dalam list |
clear | NamaList.clear() | Menghapus seluruh data di dalam list |
index | NamaList.index(value) | Mereturnkan index list dari value |
count | NamaList.count(value) | Menghitung jumlah munculnya value yang dicari di dalam list |
sort | NamaList.sort() | Mengurutkan nilai list secara ascending |
reverse | NamaList.reverse() | Membalik urutan dari list |
Selain fungsi di atas terdapat beberapa fungsi list lain yang mengkombinasikan antara list dan string seperti contoh di bawah ini :
IniList = ['a', 'b', 'c', 'd', '1', '2', '3']
IniList = "-".join(IniList) # menggabungkan list dan membuatnya menjadi string
print(IniList)
IniList = IniList.split('-') # memisahkan string dan menjadikannya list
print(IniList)
Output :
a-b-c-d-1-2-3
['a', 'b', 'c', 'd', '1', '2', '3']
Selain list
, Python juga memiliki struktur data serupa yaitu array
. Struktur data ini dapat diakses dengan cara melakukan import modul NumPy:
import numpy as np # import modul numpy dengan alias sebagai np
Apabila modul NumPy tidak ada, install terlebih dahulu di Anaconda Prompt atau terminal dengan mengetikkan:
conda install numpy
Walaupun serupa, tentu saja terdapat perbedaan antara Array dan List, yaitu
-
array
bersifat homogen (hanya dapat menyimpan elemen-elemen dengan tipe data yang sama). Sedangkan,list
bersifat heterogen (dapat menyimpan elemen-elemen dengan tipe data yang berbeda). - Banyak elemen dalam array bersifat statis (tetap). Sedangkan, banyak elemen dalam
list
bersifat dinamis (dapat diubah-ubah). -
array
jauh lebih cepat dan hemat memory daripadalist
. Hal ini dikarenakan modulnumpy
dibangun di atas bahasa C yangmana jauh lebih cepat daripada Python (nanti kita akan buktikan). Alasan lainnya adalah karena elemen-elemenarray
tersimpan dalam memory yang terletak bersebelahan dan bertipe data sama, sehingga lebih cepat dan mudah diakses. -
array
memiliki banyak sekali method/fungsi untuk komputasi numerik. Sedangkan,list
tidak punya. Sebagai informasi, NumPy memiliki kepanjangan 'Numerical Python', yangmana memang secara khusus digunakan untuk memfasilitasi komputasi-komputasi numerik.
Karena bersifat statis dan homogen, maka ukuran dan tipe data dari sebuah array
harus ditentukan sejak awal dan tidak bisa diubah-ubah lagi. Berikut adalah beberapa cara yang umum untuk mendeklarasikan sebauh array
.
Deklarasi menggunakan numpy.array
sering digunakan untuk mendeklarasikan array dan sekaligus menginisialisasi nilainya secara manual.
arr = np.array(<iterable>, <datatype>)
Parameter pertama, yaitu iterable
artinya adalah data apapun yang bisa diiterasikan, contohnya list
dan tuple
yang akan menjadi data-data yang disimpan di dalam array
. Sedangkan, parameter keduanya adalah tipe data dari semua elemen yang disimpan tersebut. Apabila tipe data tidak disebutkan, maka secara default akan menjadi int
.
arrFloat = np.array([10, 3, 7, 8, 90]) # secara default menjadi int
arrInt = np.array([1, 4, 3, 20, 11], float) # array dengan tipe data integer
arrStr = np.array(['Cristiano', 'Mbappe', 'Modric', 'Griezmann'])
arr2D = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
arr3D = np.array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]]], float)
print(arrFloat)
print(arrInt)
print(arrStr)
print(arr2D)
print(arr3D)
Apabila ingin membuat array multidimensi secara manual, maka penulisan tanda kurung siku '[' dan ']' perlu diperhatikan. Perhatikan konsep berikut:
- Array 1 dimensi terdiri dari beberapa elemen data.
- Array 2 dimensi terdiri dari beberapa array 1 dimensi.
- Array 3 dimensi terdiri dari beberapa array 2 dimensi.
- Array N dimensi terdiri dari beberapa array N - 1 dimensi.
Selain mendeklarasikan secara langsung, array
juga bisa dideklarasikan dengan menggunakan data yang ada pada list
atau tuple
. Contoh:
listExample = [1, 2, 3, 4]
tupleExample = (5, 6, 7, 8)
arr1 = [-5, 13, 113, 56]
arr2 = [11, 56, 45, 39]
arr3 = [9, 81, 22, 93]
arrAll = [arr1, arr2, arr3]
arrayList = np.array(listExample)
arrayTuple = np.array(tupleExample)
array2D = np.array(arrAll)
Terkadang, ternyata kita membutuhkan ingin menginisiasi nilai array yang memiliki 'pola' dan otomatis dijalankan. Di sinilah np.arange
dan np.linspace
beraksi.
> np.arange
Method np.arange
digunakan untuk mendeklarasikan dan menginisialisasi nilai array dengan nilai yang memiliki jarak yang sama dalam interval tertentu. Berikut adalah format penulisannya:
arrArange = np.arange(<start>, <stop>, <step>, <dtype>)
# start memiliki nilai default 0
# stop wajib dituliskan
# step memiliki nilai default 1
# dtype memiliki nilai default int
Sebagai contoh,
arrArange1 = np.arange(10)
arrArange2 = np.arange(2, 9)
arrArange3 = np.arange(2, 12, 3)
arrArange4 = np.arange(1, 10, 2, float)
print(arrArange1)
print(arrArange2)
print(arrArange3)
print(arrArange4)
Output :
[0 1 2 3 4 5 6 7 8 9]
[2 3 4 5 6 7 8]
[ 2 5 8 11]
[1. 3. 5. 7. 9.]
> np.linspace
Method ini mirip dengan np.arange
, namun perbedaannya ada di parameter step-nya. Apabila step pada np.arange
dideklarasikan secara manual, maka step pada np.linspace
dibuat secara otomatis berdasarkan 'banyak data yang diinginkan' dari start hingga stop. Semakin banyak data yang diinginkan, maka semakin kecil pula stepnya dan sebaliknya. Perhatikan format berikut:
arrLins = np.linspace(<start>, <stop>, <num>, <retstep>, <dtype>)
# start wajib dituliskan
# stop wajib dituliskan
# num memiliki nilai default 50
# retstep memiliki nilai default False
# dtype memiliki nilai default float
Seringkali parameter yang digunakan hanyalah 3 parameter pertama (start, stop, dan num). Sebagai contoh, np.linspace(0, 5, 5)
akan menginisialisasikan sebanyak 5 data yang berjarak sama dari 0 hingga 5 (yaitu 0.0, 1.25, 2.5, 3.75, 5.0). Parameter retstep (apabila True) akan me-return-kan tidak hanya array-nya, namun juga step dari nilai-nilai dalam array tersebut, yaitu 0.0, 1.25, 2.5, 3.75, 5.0 dan 1.25 sebagai step-nya. Contoh outputnya adalah sebagai berikut:
arrLins1 = np.linspace(2, 3)
arrLins2 = np.linspace(2, 3, 5)
arrLins3 = np.linspace(2, 3, 5, dtype=int)
arrLins4 = np.linspace(2, 3, 5, retstep=True)
print(arrLins1) # akan ada sebanyak 50 data berjarak sama dari 2 sampai 3
print(arrLins2) # Output: [2. 2.25 2.5 2.75 3. ]
print(arrLins3) # Output: [2 2 2 2 3]
print(arrLins4) # Output: (array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25)
Seringkali, kita tidak ingin menginisialisasikan nilai-nilai pada suatu array namun masih tetap ingin mendeklarasikannya terlebih dahulu dengan inisialisasi nilai default (biasanya 0 atau 1). Untuk itu, np.zeros
dan np.ones
sering digunakan. Method np.zeros
akan menginisialisasikan nilai 0 pada kesuluruhan elemen array dengan ukuran tertentu, sedangkan np.ones
akan menginisialisasikan nilai 1 dengan cara yang sama. Berikut adalah format syntaxnya:
arrZero = np.zeros(<shape>, <dtype>)
# shape wajib dituliskan
# dtype memiliki nilai default float
Parameter shape
mewakili ukuran array yang dibuat, misalnya np.zeros(9)
akan membuat array zeros
berukuran 9. Sedangkan, np.zeros((3, 4))
akan membuat array multidimensi dengan ukuran 3
arrZero1 = np.zeros(5)
arrZero2 = np.zeros(5, dtype=int)
arrZero3 = np.zeros((3, 4))
arrZero4 = np.zeros((3, 4, 5), dtype=int)
print(arrZero1) # Output: [0. 0. 0. 0. 0.]
print(arrZero2) # Output: [0 0 0 0 0]
print(arrZero3)
# Output:
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]
print(arrZero4)
# Output:
# [[[0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]]
#
# [[0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]]
#
# [[0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]
# [0 0 0 0 0]]]
Method np.ones
juga digunakan dengan cara yang sama, hanya berbeda nama method dan nilai yang diinisialisasikan ke dalam array (yaitu 1).
Kedua method di atas tidaklah kosong mengingat setiap elemen dalam array memiliki nilai 0 atau 1. Apabila kita ingin mendeklarasikan array yang 'kosong' (walaupun tidaklah kosong secara literal), maka gunakan np.empty
yangmana memiliki format berikut:
arrEmpty = np.empty(<shape>, <dtype>)
# shape wajib dituliskan
# dtype memiliki nilai default float
Contoh:
arrEmpty1 = np.empty(5, int)
arrEmpty2 = np.empty((3, 4))
print(arrEmpty1) # Apakah arraynya memiliki isi?
print(arrEmpty2) # Apakah arraynya memiliki isi?
for i in range(len(arrEmpty1)):
arrEmpty1[i] = int(input())
for i in range(len(arrEmpty2)):
for j in range(len(arrEmpty2[i])):
arrEmpty2[i][j] = float(input())
Hal yang menarik adalah bahwa walaupun namanya np.empty
, tetapi arraynya tidaklah kosong, seperti pada output di laptop saya (output di laptop kalian kemungkinan besar berbeda).
Maksud dari empty
bukanlah array yang benar-benar kosong tanpa nilai, karena isinya akan otomatis terisi dengan data sampah di memory. empty
yang dimaksud adalah 'kosong' dari nilai hasil inisialisasi dari user. Cara deklarasi menggunakan np.empty
adalah 'good practice' karena lebih cepat dari np.zeros
dan np.ones
.
Keunggulan dari NumPy adalah memiliki banyak atribut dan method sendiri (bukan Built-In Python) yang lebih cepat komputasinya dan siap digunakan. Berikut adalah beberapa contoh yang umum digunakan:
arr1 = np.array([10, 21, 19, 23, 46, 80, -1, 0, 13])
arr2 = np.array([1, 30, 8, 7, 9, 12, 77, -92, 11])
# Atribut
arr1.ndim # Untuk mengetahui N dimensi dari array
arr1.shape # Untuk mengetahui ukuran array
arr1.size # Untuk mengetahui banyaknya data dalam array
arr1.dtype # Untuk mengetahui tipe data elemen array
# Method
arr1.min() # Mencari nilai minimum dari elemen-elemen pada array
arr1.max() # Mencari nilai maximum dari alemen-elemen pada array
arr1.mean() # Mencari rata-rata dari elemen-elemen pada array
arr1.std() # Mencari standar deviasi dari elemen-elemen pada array
arr1.var() # Mencari varian dari elemen-elemen pada array
# Fungsi (secara element-wise)
result = np.add(arr1, arr2) # array baru dari hasil penjumlahan setiap elemen yang berkorespondensi dari beberapa array
result = np.substract(arr1, arr2) # array baru dari hasil pegurangan setiap elemen yang berkorespondensi dari beberapa array
result = np.multiply(arr1, arr2) # array baru dari hasil perkalian setiap elemen yang berkorespondensi dari beberapa array
result = np.divide(arr1, arr2) # array baru dari hasil pembagian setiap elemen yang berkorespondensi dari beberapa array
result = np.mod(arr1, arr2) # array baru dari hasil modulo setiap elemen yang berkorespondensi dari beberapa array
Note: Fungsi-fungsi di atas juga berlaku untuk array multidimensi.
Data pada array
dapat diakses dengan cara yang sama sebagaimana halnya list
.
Set adalah salah satu struktur data dalam Python yang digunakan untuk menyimpan kumpulan nilai atau elemen, dengan sifat-sifat unik dan tidak berurutan (unordered). Set hanya dapat menyimpan nilai atau elemen yang unik, artinya tidak ada nilai duplikat dalam sebuah set. Set dalam Python mirip dengan himpunan matematika, dimana set terdiri dari elemen-elemen yang tidak terurut dan tidak memiliki indeks.
Keuntungan menggunakan set adalah karena sifatnya yang hanya menyimpan nilai unik, maka set dapat digunakan untuk melakukan operasi matematika seperti gabungan (union), irisan (intersection), dan perbedaan (difference) antara dua set. Selain itu, set juga dapat digunakan untuk memeriksa keanggotaan suatu elemen dalam sebuah set dengan cepat.
Set pada Python dideklarasikan dengan menggunakan kurung kurawal "{}" dan elemennya dipisahkan dengan tanda koma. Contoh deklarasi set:
my_set = {1, 2, 3, 4, 5}
print(my_set)
Output :
{1, 2, 3, 4, 5}
Set pada Python tidak terurut, sehingga tidak dapat diakses menggunakan indeks seperti pada list atau tuple. Namun, elemen-elemen pada set dapat diakses menggunakan loop for.
Contoh:
my_set = {1, 2, 3, 4, 5}
# Menggunakan loop for untuk mengakses elemen pada set
for element in my_set:
print(element)
Output :
1
2
3
4
5
Berikut adalah beberapa method dan fungsi yang sering digunakan dalam set:
Fungsi | Deskripsi |
---|---|
add() | Menambahkan elemen baru ke dalam set |
clear() | Menghapus semua elemen dalam set |
copy() | Membuat salinan dari set |
difference() | Mengembalikan set yang berisi elemen yang terdapat di set pertama tetapi tidak di set kedua |
discard() | Menghapus elemen tertentu dari set |
intersection() | Mengembalikan set yang berisi elemen yang terdapat di kedua set |
isdisjoint() | Memeriksa apakah dua set tidak memiliki elemen yang sama |
issubset() | Memeriksa apakah set pertama merupakan subset dari set kedua |
issuperset() | Memeriksa apakah set pertama merupakan superset dari set kedua |
pop() | Menghapus dan mengembalikan elemen acak dari set |
remove() | Menghapus elemen tertentu dari set |
symmetric_difference() | Mengembalikan set yang berisi elemen yang hanya terdapat di salah satu set |
union() | Mengembalikan set yang berisi semua elemen dari kedua set |
my_set = {1, 2, 3, 4, 5}
my_set.add(6)
print(my_set)
my_set.update([6, 7, 8])
print(my_set)
my_set.remove(3)
print(my_set)
my_set1 = {1, 2, 3}
my_set2 = {3, 4, 5}
my_set3 = my_set1.union(my_set2)
print(my_set3)
Output :
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 4, 5}
{1, 2, 3, 4, 5}
Tuple adalah salah satu jenis urutan data (sequence) pada Python yang digunakan untuk menyimpan kumpulan nilai yang bersifat immutable (tidak bisa diubah setelah dibuat). Setiap nilai atau elemen pada tuple diidentifikasi dengan sebuah indeks yang dimulai dari 0.
Beberapa kelebihan dari tuple adalah:
- Lebih efisien dalam penggunaan memori daripada list karena bersifat immutable (tidak bisa diubah setelah dibuat).
- Dapat digunakan sebagai key pada dictionary karena bersifat immutable.
- Lebih cepat dalam pengaksesannya daripada list karena tersimpan secara berurutan di memori.
Tuple adalah urutan data (sequence) pada Python yang mirip dengan list, namun tidak bisa diubah setelah dibuat. Tuple dideklarasikan dengan menggunakan tanda kurung () dan elemen-elemennya dipisahkan dengan tanda koma.
Contoh deklarasi tuple:
# Mendeklarasikan sebuah tuple kosong
my_tuple = ()
# Mendeklarasikan sebuah tuple dengan beberapa elemen
my_tuple = (1, 2, 3, 4, 5)
# Mendeklarasikan sebuah tuple dengan tipe data yang berbeda
my_tuple = ("apple", 1, True, 3.14)
Output
()
(1, 2, 3, 4, 5)
('apple', 1, True, 3.14)
Kita dapat mengakses elemen pada tuple dengan menggunakan indeks yang dimulai dari 0. Contohnya sebagai berikut:
# Mendeklarasikan sebuah tuple
my_tuple = ("apple", "banana", "orange", "grape")
# Mengakses elemen pertama pada tuple
print(my_tuple[0])
# Mengakses elemen kedua pada tuple
print(my_tuple[1])
# Mengakses elemen terakhir pada tuple
print(my_tuple[-1])
Output :
apple
banana
banana
Kita juga dapat menggunakan slicing untuk mengambil sebagian elemen dari tuple:
# Mendeklarasikan sebuah tuple
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:4])
print(my_tuple[-1:-3])
Output :
(2, 3, 4)
(3, 4)
Namun perlu diingat bahwa karena tuple bersifat immutable, maka kita tidak bisa mengubah nilai dari sebuah elemen pada tuple. Sebagai contoh:
# Mendeklarasikan sebuah tuple
my_tuple = (1, 2, 3)
# Mengubah elemen kedua pada tuple (akan menghasilkan TypeError)
my_tuple[1] = 4
Output :
TypeError: 'tuple' object does not support item assignment
Sama seperti list, tuple juga memiliki fungsi dan method yang bisa kita gunakan seperti berikut:
Fungsi | Penulisan | Deskripsi |
---|---|---|
len | len(NamaTuple) | Menghitung jumlah item pada tuple |
max | max(NamaTuple) | Mencari nilai paling besar dari sebuah tuple |
min | min(NamaTuple) | Mencari nilai paling kecil dari sebuah tuple |
count | count(NamaTuple) | Mengembalikan jumlah kemunculan sebuah elemen pada tuple |
index | index(NamaTuple) | Mengembalikan indeks dari sebuah elemen pada tuple |
sorted | sorted(NamaTuple) | Mengembalikan tuple yang elemennya diurutkan secara ascending |
Method
my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print(my_tuple.count(4))
my_tuple = ("apple", "banana", "orange", "grape")
print(my_tuple.index("banana"))
Output
3
1
Fungsi
my_tuple = (5, 2, 8, 1, 3)
sorted_tuple = sorted(my_tuple)
print(sorted_tuple)
len_tuple = len(my_tuple)
print(len_tuple)
max_value = max(my_tuple)
print(max_value)
min_value = min(my_tuple)
print(min_value)
Output
[1, 2, 3, 5, 8]
4
8
1
Dictionary adalah salah satu jenis tipe data pada Python yang digunakan untuk menyimpan pasangan key-value. Dalam dictionary, setiap elemen memiliki key yang unik dan tidak boleh duplikat. Key pada dictionary bersifat immutable, artinya tidak dapat diubah setelah dideklarasikan. Sedangkan value pada dictionary bisa berupa tipe data apa saja, bahkan bisa berupa dictionary lagi.
Dictionary sangat berguna untuk menyimpan data yang membutuhkan akses dengan cepat, karena data pada dictionary diakses dengan menggunakan key yang unik. Selain itu, dictionary juga bisa digunakan untuk memodelkan data yang kompleks dengan lebih mudah.
Untuk mendeklarasikan sebuah dictionary pada Python, kita bisa menggunakan kurung kurawal {}
dan memasukkan pasangan key-value yang dipisahkan oleh tanda :
. Contoh deklarasi dictionary adalah sebagai berikut:
# Mendeklarasikan sebuah dictionary kosong
my_dict = {}
# Mendeklarasikan sebuah dictionary dengan beberapa pasangan key-value
person = {"name": "John", "age": 30, "city": "New York"}
print(person)
Output :
{'name': 'John', 'age': 30, 'city': 'New York'}
Kita juga dapat menggunakan fungsi dict()
untuk mendeklarasikan sebuah dictionary. Fungsi dict()
dapat menerima berbagai jenis argumen, seperti list, tuple, atau bahkan dictionary lain. Contoh deklarasi dictionary menggunakan fungsi dict()
adalah sebagai berikut:
# Mendeklarasikan sebuah dictionary kosong menggunakan fungsi dict()
my_dict = dict()
# Mendeklarasikan sebuah dictionary dengan beberapa pasangan key-value menggunakan fungsi dict()
person = dict(name="John", age=30, city="New York")
print(person)
# Mendeklarasikan sebuah dictionary dari sebuah list
fruits = dict([("apple", 2), ("banana", 3), ("orange", 5)])
print(fruits)
Output :
{}
{'name': 'John', 'age': 30, 'city': 'New York'}
{'apple': 2, 'banana': 3, 'orange': 5}
Untuk mengakses nilai pada sebuah dictionary, kita dapat menggunakan key yang dimiliki oleh nilai tersebut. Contohnya adalah sebagai berikut:
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengakses nilai pada dictionary dengan key "name"
print(person["name"])
# Mengakses nilai pada dictionary dengan key "age"
print(person["age"])
Output :
Output: John
Output: 30
Kita juga dapat menggunakan method get()
untuk mengakses nilai pada dictionary. Method get()
akan mengembalikan nilai None
jika key yang dicari tidak ada pada dictionary.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengakses nilai pada dictionary dengan method get()
print(person.get("name"))
# Mengakses nilai pada dictionary dengan method get() dan key yang tidak ada pada dictionary
print(person.get("gender"))
Output :
Output: John
Output: None
Berikut adalah beberapa method dan fungsi yang sering digunakan pada dictionary beserta penjelasannya dan contoh penggunaannya:
-
clear()
: Methodclear()
digunakan untuk menghapus semua pasangan key-value pada sebuah dictionary.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Menghapus semua pasangan key-value pada dictionary
person.clear()
print(person)
Output
{}
-
get()
: Methodget()
digunakan untuk mengembalikan nilai pada sebuah dictionary dengan key yang ditentukan. Jika key tidak ada pada dictionary, maka methodget()
akan mengembalikan nilaiNone
atau nilai yang ditentukan pada argumen kedua.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengembalikan nilai pada dictionary dengan key "name"
print(person.get("name"))
# Mengembalikan nilai pada dictionary dengan key "gender" dan nilai default "unknown"
print(person.get("gender", "unknown"))
Output
John
unknown
-
items()
: Methoditems()
digunakan untuk mengembalikan daftar pasangan key-value dalam bentuk tuple.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengembalikan daftar pasangan key-value dalam bentuk tuple
print(person.items())
Output
dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])
-
keys()
: Methodkeys()
digunakan untuk mengembalikan daftar key pada sebuah dictionary.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengembalikan daftar key pada dictionary
print(person.keys())
Output
dict_keys(['name', 'age', 'city'])
-
pop()
: Methodpop()
digunakan untuk menghapus dan mengembalikan nilai pada sebuah dictionary dengan key yang ditentukan.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Menghapus dan mengembalikan nilai pada dictionary dengan key "age"
print(person.pop("age"))
print(person)
Output
30
{'name': 'John', 'city': 'New York'}
-
values()
: Methodvalues()
digunakan untuk mengembalikan daftar nilai pada sebuah dictionary.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengembalikan daftar nilai pada dictionary
print(person.values())
Output
dict_values(['John', 30, 'New York'])
-
all()
: Fungsiall()
digunakan untuk memeriksa apakah semua nilai pada dictionary adalahTrue
. Fungsi ini akan mengembalikan nilaiTrue
jika semua nilai pada dictionary adalahTrue
, jika tidak maka akan mengembalikan nilaiFalse
.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Memeriksa apakah semua nilai pada dictionary adalah True
print(all(person.values()))
# Mengubah nilai pada dictionary menjadi False
person["age"] = False
# Memeriksa apakah semua nilai pada dictionary adalah True
print(all(person.values()))
Output
True
False
-
any()
: Fungsiany()
digunakan untuk memeriksa apakah setidaknya ada satu nilai pada dictionary yang bernilaiTrue
. Fungsi ini akan mengembalikan nilaiTrue
jika setidaknya ada satu nilai pada dictionary yang bernilaiTrue
, jika tidak maka akan mengembalikan nilaiFalse
.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Memeriksa apakah setidaknya ada satu nilai pada dictionary yang bernilai True
print(any(person.values()))
# Mengubah semua nilai pada dictionary menjadi False
person.update((key, False) for key in person)
# Memeriksa apakah setidaknya ada satu nilai pada dictionary yang bernilai True
print(any(person.values()))
Output
True
False
-
sorted()
: Fungsisorted()
digunakan untuk mengurutkan pasangan key-value pada dictionary berdasarkan nilai dari key. Fungsi ini akan mengembalikan list yang berisi pasangan key-value yang telah diurutkan.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Mengurutkan pasangan key-value pada dictionary berdasarkan nilai dari key
sorted_person = sorted(person.items())
print(sorted_person)
Output
[('age', 30), ('city', 'New York'), ('name', 'John')]
-
sum()
: Fungsisum()
digunakan untuk menjumlahkan semua nilai pada dictionary.
# Mendeklarasikan sebuah dictionary
person = {"name": "John", "age": 30, "city": "New York"}
# Menjumlahkan semua nilai pada dictionary
print(sum(person.values()))
Output
30
-
zip()
: Fungsizip()
digunakan untuk menggabungkan dua buah list atau lebih menjadi sebuah dictionary.
# Mendeklarasikan dua buah list
keys = ["name", "age", "city"]
values = ["John", 30, "New York"]
# Menggabungkan dua buah list menjadi sebuah dictionary
person = dict(zip(keys, values))
print(person)
Output
{'name': 'John', 'age': 30, 'city': 'New York'}