Tipe Data Lanjutan Untuk Python
Tipe Data
Dasar dari pembelajaran Bahasa Pemrograman baru adalah pemahaman tentang tipe data. Di sini, kamu akan belajar tentang tipe data bawaan yang tersedia di Python 3, beserta contoh penggunaannya.
Numbers
Python memiliki tiga tipe data numerik: int (integer), float (bilangan pecahan), dan complex (bilangan kompleks). Int adalah tipe data untuk bilangan bulat, seperti 1, 2, dan 3. Float adalah tipe data untuk bilangan pecahan, seperti 1.5 dan 2.7. Complex adalah tipe data untuk bilangan kompleks, seperti 3+4j, dimana j merupakan akar kompleks dari -1.
a = 5
print(a, "is of type", type(a))
a = 2.0
print(a, "is of type", type(a))
a = 1+2j
print(a, "is complex number?", isinstance(1+2j,complex))
Hasil :
5 is of type
2.0 is of type
(1+2j) is complex number? True
Di Python, integer tidak terbatas oleh jumlah atau panjang tertentu, tetapi terbatas oleh memori yang tersedia. Hal ini berarti bahwa kamu tidak perlu menggunakan tipe data yang dapat menyimpan angka yang sangat besar seperti long long di C/C++, biginteger, atau yang sejenisnya. Sebagai contoh, kode berikut menunjukkan bahwa Python tidak membatasi output integer ketika mencari bilangan ke-10.000 dari deret Fibonacci :
Catatan: bilangan ke-10.000 dari deret Fibonacci memiliki panjang 2.090 digit)
x=[0]*10005; #inisialisasi array 0 sebanyak 10005; x[0]=0
x[1]=1; #x[1]=1
for j in range(2,10001):
x[j]=x[j-1]+x[j-2] # Fibonacci
print(x[10000])
Hasil :
33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875
Perhatikan bagaimana Python memotong digit ke-16 pada variabel float b. Tipe data float atau bilangan pecahan hanya memiliki akurasi hingga 15 desimal. Perbedaan utama antara integer dan float adalah adanya tanda titik (decimal point). Sebagai contoh, angka 1 merupakan integer, sedangkan angka 1.0 merupakan float atau bilangan pecahan.
b = 0.1234567890123456789
b
Hasil :
0.12345678901234568
Karena Python sering digunakan oleh matematikawan, tipe data bilangan di Python juga mendukung bilangan imajiner dan bilangan kompleks. Nilai bilangan kompleks (complex) dituliskan dalam bentuk x + yj, di mana bagian x merupakan bilangan real dan bagian y merupakan bilangan imajiner. Sebagai contoh, inilah cara menggunakan bilangan kompleks di Python:
a = 1234567890123456789
print(a)
Hasil :
1234567890123456789
c = 1+2j
print(c)
Hasil :
(1+2j)
Strings
String adalah sekumpulan karakter unicode yang terurut. String dapat dideklarasikan dengan menggunakan tanda petik tunggal atau ganda. String dengan lebih dari satu baris dapat ditandai dengan menggunakan tiga tanda petik tunggal atau ganda, yaitu "'''" atau """"".
s = "This is a string"
s = '''this is a multiline
next new line (1)
another new line (2)'''
Seperti list dan tuple, operator slicing [ ] dapat digunakan pada string. Namun, meskipun seluruh string merupakan tipe data yang dapat diubah (mutable), masing-masing elemennya tidak dapat diubah (immutable). Artinya, kamu tidak dapat mengubah salah satu karakter dalam string, tetapi kamu dapat membuat string baru dengan menggabungkan beberapa string yang sudah ada.
s = "Hello World!"
print(s[4])
print(s[6:11])
s[5]="d"
Hasil :
‘o’
‘World’
Traceback (most recent call last):
File “”, line 1, in
TypeError: ‘str’ object does not support item assignment
s = "Hello World!"
print(s)
s= "Try Python!"
print(s)
Hasil :
‘Hello World!’ ‘Try Python!’
Bool/Boolean
Tipe data bool atau Boolean merupakan turunan dari tipe data integer atau int yang hanya memiliki dua nilai konstanta: True dan False. Nilai True biasanya ditandai dengan 1, sedangkan nilai False ditandai dengan 0. Tipe data bool sering digunakan dalam operasi logika di Python, seperti percabangan if-else atau perulangan while.
Nilai Boolean
Nilai konstanta False dan True mewakili nilai kebenaran (truth values), meskipun ada beberapa nilai lain yang juga dianggap benar atau salah. Dalam konteks operasi matematika, kedua nilai ini berlaku seperti 0 dan 1, sesuai dengan False dan True. Namun, perlu diingat bahwa tipe data bool hanya memiliki dua nilai yang valid, yaitu True dan False. Jadi, jika kamu menggunakan nilai lain selain itu dalam operasi logika, maka akan terjadi kesalahan.
Python menyediakan fungsi bawaan bool() yang dapat mengonversi berbagai tipe data menjadi tipe data bool. Fungsi ini akan mengembalikan nilai True jika nilai yang diinputkan dapat direpresentasikan sebagai nilai kebenaran (truth value), dan False jika sebaliknya.
Nilai kebenaran adalah sebuah nilai yang dapat digunakan untuk menentukan apakah suatu pernyataan benar atau salah. Ini sering digunakan dalam sintaksis kondisi seperti pernyataan if atau while, atau sebagai operan dari operasi Boolean.
Berikut adalah daftar objek bawaan yang bernilai salah saat diuji dengan nilai kebenaran:
- Beberapa konstanta yang bernilai salah saat diuji dengan nilai kebenaran adalah None dan False
- Angka nol dari semua tipe numeric bernilai salah saat diuji dengan nilai kebenaran, termasuk 0, 0.0, 0j, Decimal(0), dan Fraction(0, 1)
- Beberapa tipe urutan dan koleksi yang bernilai salah saat diuji dengan nilai kebenaran adalah "", (), {}, set(), dan range(0). Ini termasuk string kosong, tuple kosong, set kosong, dan range dengan panjang nol
Untuk objek yang dibuat sendiri, representasi nilai Boolean-nya akan tergantung pada implementasi dari metode khusus bernama __bool__. Jika __bool__ mengembalikan True, maka objek tersebut akan dianggap bernilai True saat diuji dengan nilai kebenaran. Sebaliknya, jika __bool__ mengembalikan False, maka objek tersebut akan dianggap bernilai False saat diuji dengan nilai kebenaran.
Operasi Boolean
Operasi dan fungsi bawaan yang menghasilkan nilai Boolean akan selalu mengembalikan 0 atau False untuk hasil yang salah, dan 1 atau True untuk hasil yang benar, kecuali jika dinyatakan sebaliknya dalam dokumentasi. Ini berlaku untuk operasi dan fungsi yang tersedia secara bawaan di dalam bahasa pemrograman yang bersangkutan.
Operasi yang tersedia untuk tipe Boolean akan dijelaskan lebih lanjut dalam postingan yang membahas tentang operator, operand, dan ekspresi. Posting tersebut akan memberikan informasi lebih rinci mengenai cara menggunakan operator dan operand Boolean dalam ekspresi pemrograman.
List
List adalah jenis kumpulan data terurut (ordered sequence) yang sering digunakan di Python. Ini mirip dengan array pada bahasa pemrograman lain, tetapi elemen di dalam list di Python tidak harus memiliki tipe data yang sama. Mendeklarasikan list sangat mudah, hanya dengan menggunakan kurung siku dan menggabungkan elemen-elemen dengan koma. Setiap elemen dapat diakses dengan indeks yang dimulai dari 0. Contohnya, jika kita memiliki list [1, 2, 3], maka elemen pertama adalah 1 dan diakses dengan indeks 0, elemen kedua adalah 2 dan diakses dengan indeks 1, dan seterusnya.
a = [1, 2.2, 'python']
Python memiliki operator pemotongan (slicing) yang dapat digunakan untuk mengekstrak item atau beberapa item yang berada dalam rentang tertentu dari tipe data urutan, seperti list, string, dan tuple. Beberapa tipe urutan juga mendukung "slicing tambahan" dengan menambahkan parameter ketiga berupa "langkah" (step). Contohnya, jika kita memiliki list [1, 2, 3, 4, 5] dan ingin mengekstrak item pertama sampai item ketiga, kita dapat menggunakan operator pemotongan dengan sintaks [start:end], di mana start adalah indeks item pertama yang ingin kita ekstrak dan end adalah indeks item terakhir yang ingin kita ekstrak, plus satu. Jadi, kita dapat mengekstrak item pertama sampai item ketiga dengan menggunakan [0:3], yang akan menghasilkan list [1, 2, 3].
- Untuk mengambil elemen paling awal dari list x, kita dapat menggunakan indeks 0 dengan sintaks x[0]. Ini akan mengembalikan elemen pertama di dalam list x. Misalnya, jika x adalah list [1, 2, 3], maka x[0] akan mengembalikan nilai 1. Indeks di dalam list dimulai dari 0, jadi elemen pertama selalu diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya.
- Untuk mengambil elemen dengan indeks 5 dari list x, kita dapat menggunakan sintaks x[5]. Ini akan mengembalikan elemen kelima di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5, 6], maka x[5] akan mengembalikan nilai 6. Indeks di dalam list dimulai dari 0, jadi elemen pertama diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya. Jadi, elemen kelima di dalam list x akan diakses dengan indeks 5.
- Untuk mengambil elemen dengan indeks paling belakang ke-1 dari list x, kita dapat menggunakan sintaks x[-1]. Ini akan mengembalikan elemen terakhir di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5], maka x[-1] akan mengembalikan nilai 5. Indeks negatif dapat digunakan untuk mengakses elemen list dari belakang ke depan, dimulai dari indeks -1 untuk elemen terakhir, indeks -2 untuk elemen sebelumnya, dan seterusnya. Jadi, x[-1] akan mengambil elemen terakhir di dalam list x, x[-2] akan mengambil elemen sebelumnya, dan seterusnya.
- Untuk membuat list dari anggota elemen list x dengan indeks 3 hingga sebelum indeks 5 (tidak termasuk elemen dengan indeks 5), kita dapat menggunakan operator pemotongan (slicing) dengan sintaks x[3:5]. Ini akan mengembalikan list yang hanya berisi elemen dengan indeks 3 dan 4 di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5, 6], maka x[3:5] akan mengembalikan list [4, 5]. Indeks di dalam list dimulai dari 0, jadi elemen pertama diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya. Dengan operator pemotongan, kita dapat mengekstrak beberapa elemen dengan menentukan indeks awal dan akhir yang ingin kita ambil, dengan sintaks [start:end]. Indeks akhir tidak termasuk elemen dengan indeks tersebut, jadi dalam contoh di atas, x[3:5] akan mengambil elemen dengan indeks 3 dan 4, tetapi tidak termasuk elemen dengan indeks 5.
- Untuk membuat list dari anggota elemen list x paling awal hingga sebelum indeks 5 (tidak termasuk elemen dengan indeks 5), kita dapat menggunakan operator pemotongan (slicing) dengan sintaks x[:5]. Ini akan mengembalikan list yang hanya berisi elemen dengan indeks 0 hingga 4 di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5, 6], maka x[:5] akan mengembalikan list [1, 2, 3, 4, 5]. Indeks di dalam list dimulai dari 0, jadi elemen pertama diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya. Dengan operator pemotongan, kita dapat mengekstrak beberapa elemen dengan menentukan indeks awal dan akhir yang ingin kita ambil, dengan sintaks [start:end]. Jika indeks awal tidak ditentukan, maka operator pemotongan akan mengambil semua elemen sebelum indeks akhir. Jadi, dalam contoh di atas, x[:5] akan mengambil semua elemen di dalam list x sebelum indeks 5, yaitu elemen dengan indeks 0 hingga 4.
- Untuk membuat list dari anggota elemen list x mulai indeks ke-3 dari belakang hingga paling belakang, kita dapat menggunakan operator pemotongan (slicing) dengan sintaks x[-3:]. Ini akan mengembalikan list yang berisi elemen dengan indeks terakhir hingga indeks ke-3 dari belakang di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5, 6], maka x[-3:] akan mengembalikan list [4, 5, 6]. Indeks di dalam list dimulai dari 0, jadi elemen pertama diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya. Dengan operator pemotongan, kita dapat mengekstrak beberapa elemen dengan menentukan indeks awal dan akhir yang ingin kita ambil, dengan sintaks [start:end]. Jika indeks akhir tidak ditentukan, maka operator pemotongan akan mengambil semua elemen setelah indeks awal. Jadi, dalam contoh di atas, x[-3:] akan mengambil semua elemen di dalam list x setelah indeks ke-3 dari belakang, yaitu elemen dengan indeks terakhir hingga indeks ke-3 dari belakang.
- Untuk membuat list dari anggota elemen list x dengan indeks 1 hingga sebelum indeks 7, dengan "langkah" 2 (hanya mengambil elemen dengan indeks 1, 3, dan 5), kita dapat menggunakan operator pemotongan (slicing) dengan sintaks x[1:7:2]. Ini akan mengembalikan list yang hanya berisi elemen dengan indeks 1, 3, dan 5 di dalam list x. Misalnya, jika x adalah list [1, 2, 3, 4, 5, 6, 7, 8, 9], maka x[1:7:2] akan mengembalikan list [2, 4, 6]. Indeks di dalam list dimulai dari 0, jadi elemen pertama diakses dengan indeks 0, elemen kedua dengan indeks 1, dan seterusnya. Dengan operator pemotongan, kita dapat mengekstrak beberapa elemen dengan menentukan indeks awal, akhir, dan langkah (step) yang ingin kita ambil, dengan sintaks [start:end:step]. Jika kita menentukan langkah (step) 2, maka operator pemotongan akan mengambil setiap elemen dengan interval 2 di antara elemen yang lain. Jadi, dalam contoh di atas, x[1:7:2] akan mengambil elemen dengan indeks 1, 3, dan 5, dengan interval 2 di antara masing-masing elemen.
x = [5,10,15,20,25,30,35,40]
print(x[5])
print(x[-1])
print(x[3:5])
print(x[:5])
print(x[-3:])
print(x[1:7:2])
Hasil :
30
40
[20, 25]
[5, 10, 15, 20, 25]
[30, 35, 40]
[10, 20, 30]
Elemen dalam list dapat diubah atau ditambahkan. Sebagai contoh, untuk melakukan perubahan atau penambahan:
x = [1,2,3]
x[2]=4
x
Hasil :
[1, 2, 4]
x.append(5)
x
Hasil :
[1, 2, 4, 5]
Untuk menghapus elemen dari list, gunakan fungsi del.
spam = ['cat', 'bat', 'rat', 'elephant']
del spam[2]
print(spam)
Hasil :
[‘cat’, ‘bat’, ‘elephant’]
del spam[2]
print(spam)
Hasil :
[‘cat’, ‘bat’]
Tuple
Tuple adalah tipe data yang mirip dengan list, namun tidak dapat diubah elemennya setelah dibuat. Biasanya, tuple digunakan untuk data yang tidak perlu diubah setelah dibuat dan dieksekusi lebih cepat daripada list. Tuple didefinisikan dengan menggunakan tanda kurung dan elemennya dipisahkan dengan tanda koma.
t = (5,'program', 1+3j)
Sama seperti list, kita dapat mengambil bagian dari tuple dengan menggunakan teknik slicing, namun tidak dapat melakukan perubahan terhadap elemen tuple setelah dibuat.
t = (5,'program', 1+3j)
t[1]
t[0:3]
t[0]=10
Hasil :
‘program’
(5, ‘program’, (1+3j))
Traceback (most recent call last):
File “”, line 1, in
TypeError: ‘tuple’ object does not support item assignment
Set
Set adalah kumpulan item yang unik dan tidak memiliki urutan. Set didefinisikan dengan menggunakan tanda kurung kurawal dan elemennya dipisahkan dengan tanda koma. Kita dapat melakukan operasi gabungan (union) dan saling bersinggungan (intersection) pada set, serta secara otomatis menghapus data yang duplikat.
a = {1,2,2,3,3,3}
a
Hasil :
{1, 2, 3}
Karena set tidak memiliki urutan, maka kita tidak dapat mengambil bagian dari set menggunakan proses slicing seperti yang dilakukan pada list atau tuple.
a = {1,2,3}
a[1]
Hasil :
Traceback (most recent call last):
File “”, line 301, in runcode
File “”, line 1, in
TypeError: ‘set’ object does not support indexing
Dictionary
Dictionary pada Python adalah tipe data yang terdiri dari pasangan kunci-nilai (pair of key-value) yang tidak terurut. Dictionary dapat digunakan untuk menyimpan data dari ukuran kecil hingga besar. Untuk mengakses data dalam dictionary, kita harus mengetahui kuncinya (key). Dictionary didefinisikan dengan menggunakan tanda kurung kurawal dan tambahan definisi sebagai berikut:
- Setiap elemen pasangan kunci-nilai dipisahkan dengan tanda koma (,).
- Kunci dan nilai dipisahkan dengan tanda titik dua (:).
- Kunci dan nilai dalam dictionary dapat berupa tipe variabel atau obyek apapun.
d = {1:'value','key':2}
print(type(d))
Hasil :
d = {1:'value','key':2}
print(type(d))
print("d[1] = ", d[1]);
print("d['key'] = ", d['key']);
Hasil :
d[1] = value
d[‘key’] = 2
Dictionary tidak termasuk dalam kelompok implementasi urutan (sequences), sehingga tidak bisa diakses menggunakan indeks urutan seperti halnya list atau tuple. Jika kita mencoba mengakses dictionary dengan indeks, akan muncul error (KeyError) karena tidak ada kunci (key) yang sesuai dengan indeks tersebut. Sebagai contoh, dalam kode berikut, jika kita mencoba mengakses dictionary dengan indeks 2, akan muncul error karena tidak ada kunci (key) 2:
d = {1:'value','key':2}
print(type(d))
print("d[1] = ", d[1]);
print("d['key'] = ", d['key']);
# Generates error
print("d[2] = ", d[2]);
Hasil :
d[1] = value
d[‘key’] = 2
—————————————————————————
KeyError Traceback (most recent call last)
in ()
1 d = {1:’value’,’key’:2}
—-> 2 print(“d[2] = “, d[2]);
KeyError: 2
Konversi (conversion, cast) antar tipe data
Kita dapat mengubah tipe data bawaan menjadi tipe data lain dengan menggunakan fungsi konversi tipe bawaan (standard type) seperti int(), float(), str(), dll.
float(5)
Hasil :
5.0
Saat mengubah tipe data float menjadi integer, proses konversi tersebut akan menghapus nilai di belakang koma (floor/truncating).
int(10.6)
Hasil :
10
int(-10.6)
Hasil :
-10
Saat melakukan konversi tipe data ke dan dari string, proses tersebut akan menguji validitas data tersebut.
float('2.5')
Hasil :
2.5
str(25)
Hasil :
’25’
int('1p')
Hasil :
Traceback (most recent call last):
File “”, line 301, in runcode
File “”, line 1, in
ValueError: invalid literal for int() with base 10: ‘1p’
Selain tipe data bawaan seperti integer, float, dan string, kamu juga dapat melakukan konversi tipe data kumpulan seperti set, list, dan tuple.
set([1,2,3])
Hasil :
{1, 2, 3}
tuple({5,6,7})
Hasil :
(5, 6, 7)
list('hello')
Hasil :
[‘h’, ‘e’, ‘l’, ‘l’, ‘o’]
Untuk mengubah tipe data lain menjadi dictionary, data tersebut harus memenuhi persyaratan pasangan kunci-nilai (key-value). Berikut adalah dua contoh konversi:
Kamu dapat mengubah list yang terdiri dari beberapa list yang isinya merupakan pasangan nilai menjadi dictionary. Kamu juga dapat mengubah list yang terdiri dari beberapa tuple yang isinya merupakan pasangan nilai menjadi dictionary.
dict([[1,2],[3,4]])
Hasil :
{1: 2, 3: 4}
dict([(3,26),(4,44)])
Hasil :
{3: 26, 4: 44}
Untuk menyelesaikan artikel ini, kita telah membahas tipe data lanjutan yang tersedia di Python. Pada postingan ini juga telah dijelaskan bagaimana menggunakan dan mengoperasikan tipe data dalam program Python. Sekarang, kamu seharusnya lebih terampil dalam menggunakan tipe data lanjutan di Python untuk menyelesaikan berbagai macam masalah yang mungkin kamu hadapi. Selamat mencoba!