Python Berorientasi Objek - Struktur Data
Struktur data Python sangat intuitif dari sudut pandang sintaks dan mereka menawarkan banyak pilihan operasi. Anda perlu memilih struktur data Python tergantung pada data apa yang terlibat, apakah perlu dimodifikasi, atau apakah itu adalah data tetap dan jenis akses apa yang diperlukan, seperti di awal / akhir / acak dll.
Daftar
Daftar mewakili jenis struktur data yang paling serbaguna dengan Python. Daftar adalah wadah yang menyimpan nilai yang dipisahkan koma (item atau elemen) di antara tanda kurung siku. Daftar berguna saat kita ingin bekerja dengan beberapa nilai terkait. Karena daftar menyatukan data, kita dapat melakukan metode dan operasi yang sama pada beberapa nilai sekaligus. Indeks list dimulai dari nol dan tidak seperti string, list bisa berubah.
Struktur Data - Daftar
>>>
>>> # Any Empty List
>>> empty_list = []
>>>
>>> # A list of String
>>> str_list = ['Life', 'Is', 'Beautiful']
>>> # A list of Integers
>>> int_list = [1, 4, 5, 9, 18]
>>>
>>> #Mixed items list
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>> # To print the list
>>>
>>> print(empty_list)
[]
>>> print(str_list)
['Life', 'Is', 'Beautiful']
>>> print(type(str_list))
<class 'list'>
>>> print(int_list)
[1, 4, 5, 9, 18]
>>> print(mixed_list)
['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
Mengakses Item dalam Daftar Python
Setiap item daftar diberi nomor - yaitu indeks atau posisi nomor tersebut. Indeks selalu dimulai dari nol, indeks kedua adalah satu dan seterusnya. Untuk mengakses item dalam daftar, kita dapat menggunakan nomor indeks ini dalam tanda kurung siku. Perhatikan kode berikut misalnya -
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>>
>>> # To access the First Item of the list
>>> mixed_list[0]
'This'
>>> # To access the 4th item
>>> mixed_list[3]
18
>>> # To access the last item of the list
>>> mixed_list[-1]
'list'
Objek Kosong
Objek Kosong adalah tipe bawaan Python yang paling sederhana dan paling dasar. Kami telah menggunakannya berkali-kali tanpa menyadarinya dan telah memperluasnya ke setiap kelas yang kami buat. Tujuan utama menulis kelas kosong adalah untuk memblokir sesuatu untuk saat ini dan kemudian memperluas dan menambahkan perilaku ke dalamnya.
Menambahkan perilaku ke kelas berarti mengganti struktur data dengan objek dan mengubah semua referensi ke dalamnya. Jadi penting untuk memeriksa data, apakah itu objek yang disamarkan, sebelum Anda membuat sesuatu. Perhatikan kode berikut untuk pemahaman yang lebih baik:
>>> #Empty objects
>>>
>>> obj = object()
>>> obj.x = 9
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
obj.x = 9
AttributeError: 'object' object has no attribute 'x'
Jadi dari atas, kita dapat melihat bahwa tidak mungkin menyetel atribut apa pun pada objek yang dibuat secara langsung. Ketika Python mengizinkan sebuah objek memiliki atribut arbitrer, dibutuhkan sejumlah memori sistem untuk melacak atribut apa yang dimiliki setiap objek, untuk menyimpan nama atribut dan nilainya. Bahkan jika tidak ada atribut yang disimpan, sejumlah memori dialokasikan untuk atribut baru yang potensial.
Jadi Python menonaktifkan properti arbitrer pada objek dan beberapa bawaan lainnya, secara default.
>>> # Empty Objects
>>>
>>> class EmpObject:
pass
>>> obj = EmpObject()
>>> obj.x = 'Hello, World!'
>>> obj.x
'Hello, World!'
Oleh karena itu, jika kita ingin mengelompokkan properti bersama, kita dapat menyimpannya dalam objek kosong seperti yang ditunjukkan pada kode di atas. Namun, metode ini tidak selalu disarankan. Ingatlah bahwa kelas dan objek hanya boleh digunakan saat Anda ingin menentukan data dan perilaku.
Tuple
Tupel mirip dengan daftar dan dapat menyimpan elemen. Namun, mereka tidak dapat diubah, jadi kami tidak dapat menambah, menghapus, atau mengganti objek. Manfaat utama yang diberikan tupel karena sifat kekekalannya adalah kita dapat menggunakannya sebagai kunci dalam kamus, atau di lokasi lain di mana suatu objek memerlukan nilai hash.
Tupel digunakan untuk menyimpan data, dan bukan perilaku. Jika Anda memerlukan perilaku untuk memanipulasi tupel, Anda harus meneruskan tupel ke dalam fungsi (atau metode pada objek lain) yang melakukan tindakan tersebut.
Karena tupel dapat bertindak sebagai kunci kamus, nilai yang disimpan berbeda satu sama lain. Kita dapat membuat tupel dengan memisahkan nilai dengan koma. Tupel dibungkus dalam tanda kurung tetapi tidak wajib. Kode berikut menunjukkan dua tugas yang identik.
>>> stock1 = 'MSFT', 95.00, 97.45, 92.45
>>> stock2 = ('MSFT', 95.00, 97.45, 92.45)
>>> type (stock1)
<class 'tuple'>
>>> type(stock2)
<class 'tuple'>
>>> stock1 == stock2
True
>>>
Mendefinisikan Tuple a
Tupel sangat mirip dengan list kecuali bahwa seluruh rangkaian elemen diapit oleh tanda kurung, bukan tanda kurung siku.
Sama seperti saat Anda mengiris daftar, Anda mendapatkan daftar baru dan saat Anda mengiris tupel, Anda mendapatkan tupel baru.
>>> tupl = ('Tuple','is', 'an','IMMUTABLE', 'list')
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl[0]
'Tuple'
>>> tupl[-1]
'list'
>>> tupl[1:3]
('is', 'an')
Metode Python Tuple
Kode berikut menunjukkan metode dalam tupel Python -
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl.append('new')
Traceback (most recent call last):
File "<pyshell#148>", line 1, in <module>
tupl.append('new')
AttributeError: 'tuple' object has no attribute 'append'
>>> tupl.remove('is')
Traceback (most recent call last):
File "<pyshell#149>", line 1, in <module>
tupl.remove('is')
AttributeError: 'tuple' object has no attribute 'remove'
>>> tupl.index('list')
4
>>> tupl.index('new')
Traceback (most recent call last):
File "<pyshell#151>", line 1, in <module>
tupl.index('new')
ValueError: tuple.index(x): x not in tuple
>>> "is" in tupl
True
>>> tupl.count('is')
1
Dari kode yang ditunjukkan di atas, kita dapat memahami bahwa tupel tidak dapat diubah dan karenanya -
Kamu cannot menambahkan elemen ke tupel.
Kamu cannot menambahkan atau memperpanjang metode.
Kamu cannot menghapus elemen dari tupel.
Tuple punya no hapus atau metode pop.
Hitung dan indeks adalah metode yang tersedia dalam tupel.
Kamus
Dictionary adalah salah satu tipe data bawaan Python dan mendefinisikan hubungan satu-ke-satu antara kunci dan nilai.
Mendefinisikan Kamus
Perhatikan kode berikut untuk memahami tentang mendefinisikan kamus -
>>> # empty dictionary
>>> my_dict = {}
>>>
>>> # dictionary with integer keys
>>> my_dict = { 1:'msft', 2: 'IT'}
>>>
>>> # dictionary with mixed keys
>>> my_dict = {'name': 'Aarav', 1: [ 2, 4, 10]}
>>>
>>> # using built-in function dict()
>>> my_dict = dict({1:'msft', 2:'IT'})
>>>
>>> # From sequence having each item as a pair
>>> my_dict = dict([(1,'msft'), (2,'IT')])
>>>
>>> # Accessing elements of a dictionary
>>> my_dict[1]
'msft'
>>> my_dict[2]
'IT'
>>> my_dict['IT']
Traceback (most recent call last):
File "<pyshell#177>", line 1, in <module>
my_dict['IT']
KeyError: 'IT'
>>>
Dari kode di atas kita dapat mengamati bahwa:
Pertama kita membuat kamus dengan dua elemen dan menugaskannya ke variabel my_dict. Setiap elemen adalah pasangan nilai kunci, dan seluruh rangkaian elemen diapit oleh tanda kurung kurawal.
Nomor 1 adalah kuncinya dan msftadalah nilainya. Demikian pula,2 adalah kuncinya dan IT adalah nilainya.
Anda bisa mendapatkan nilai dengan kunci, tetapi tidak sebaliknya. Demikianlah saat kita mencobamy_dict[‘IT’] , ini menimbulkan pengecualian, karena IT bukanlah kunci.
Memodifikasi Kamus
Perhatikan kode berikut untuk memahami tentang memodifikasi kamus -
>>> # Modifying a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'IT'}
>>> my_dict[2] = 'Software'
>>> my_dict
{1: 'msft', 2: 'Software'}
>>>
>>> my_dict[3] = 'Microsoft Technologies'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
Dari kode di atas kita dapat mengamati bahwa -
Anda tidak dapat memiliki kunci duplikat dalam kamus. Mengubah nilai kunci yang ada akan menghapus nilai lama.
Anda dapat menambahkan pasangan nilai kunci baru kapan saja.
Kamus tidak memiliki konsep keteraturan antar elemen. Mereka adalah koleksi sederhana yang tidak berurutan.
Mencampur tipe Data dalam Kamus
Perhatikan kode berikut untuk memahami tentang pencampuran tipe data dalam kamus -
>>> # Mixing Data Types in a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
>>> my_dict[4] = 'Operating System'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>> my_dict['Bill Gates'] = 'Owner'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
Dari kode di atas kita dapat mengamati bahwa -
Bukan hanya string tetapi nilai kamus dapat berupa tipe data apa pun termasuk string, bilangan bulat, termasuk kamus itu sendiri.
Tidak seperti nilai kamus, kunci kamus lebih dibatasi, tetapi dapat berupa jenis apa pun seperti string, bilangan bulat, atau lainnya.
Menghapus Item dari Kamus
Perhatikan kode berikut untuk memahami tentang menghapus item dari kamus -
>>> # Deleting Items from a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
>>>
>>> del my_dict['Bill Gates']
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>>
>>> my_dict.clear()
>>> my_dict
{}
Dari kode di atas kita dapat mengamati bahwa -
del - memungkinkan Anda menghapus item satu per satu dari kamus dengan kunci.
clear - menghapus semua item dari kamus.
Set
Set () adalah koleksi tidak berurutan tanpa elemen duplikat. Meskipun item individu tidak dapat diubah, set itu sendiri dapat berubah, yaitu kita dapat menambah atau menghapus elemen / item dari set. Kita dapat melakukan operasi matematika seperti penyatuan, persimpangan dll dengan himpunan.
Meskipun set secara umum dapat diimplementasikan menggunakan pohon, set dengan Python dapat diimplementasikan menggunakan tabel hash. Ini memungkinkannya menjadi metode yang sangat dioptimalkan untuk memeriksa apakah elemen tertentu terkandung dalam himpunan
Membuat satu set
Satu set dibuat dengan menempatkan semua item (elemen) di dalam kurung kurawal {}, dipisahkan dengan koma atau dengan menggunakan fungsi bawaan set(). Perhatikan baris kode berikut -
>>> #set of integers
>>> my_set = {1,2,4,8}
>>> print(my_set)
{8, 1, 2, 4}
>>>
>>> #set of mixed datatypes
>>> my_set = {1.0, "Hello World!", (2, 4, 6)}
>>> print(my_set)
{1.0, (2, 4, 6), 'Hello World!'}
>>>
Metode untuk Set
Perhatikan kode berikut untuk memahami tentang metode untuk set -
>>> >>> #METHODS FOR SETS
>>>
>>> #add(x) Method
>>> topics = {'Python', 'Java', 'C#'}
>>> topics.add('C++')
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>>
>>> #union(s) Method, returns a union of two set.
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>> team = {'Developer', 'Content Writer', 'Editor','Tester'}
>>> group = topics.union(team)
>>> group
{'Tester', 'C#', 'Python', 'Editor', 'Developer', 'C++', 'Java', 'Content
Writer'}
>>> # intersets(s) method, returns an intersection of two sets
>>> inters = topics.intersection(team)
>>> inters
set()
>>>
>>> # difference(s) Method, returns a set containing all the elements of
invoking set but not of the second set.
>>>
>>> safe = topics.difference(team)
>>> safe
{'Python', 'C++', 'Java', 'C#'}
>>>
>>> diff = topics.difference(group)
>>> diff
set()
>>> #clear() Method, Empties the whole set.
>>> group.clear()
>>> group
set()
>>>
Operator untuk Set
Perhatikan kode berikut untuk memahami tentang operator untuk set -
>>> # PYTHON SET OPERATIONS
>>>
>>> #Creating two sets
>>> set1 = set()
>>> set2 = set()
>>>
>>> # Adding elements to set
>>> for i in range(1,5):
set1.add(i)
>>> for j in range(4,9):
set2.add(j)
>>> set1
{1, 2, 3, 4}
>>> set2
{4, 5, 6, 7, 8}
>>>
>>> #Union of set1 and set2
>>> set3 = set1 | set2 # same as set1.union(set2)
>>> print('Union of set1 & set2: set3 = ', set3)
Union of set1 & set2: set3 = {1, 2, 3, 4, 5, 6, 7, 8}
>>>
>>> #Intersection of set1 & set2
>>> set4 = set1 & set2 # same as set1.intersection(set2)
>>> print('Intersection of set1 and set2: set4 = ', set4)
Intersection of set1 and set2: set4 = {4}
>>>
>>> # Checking relation between set3 and set4
>>> if set3 > set4: # set3.issuperset(set4)
print('Set3 is superset of set4')
elif set3 < set4: #set3.issubset(set4)
print('Set3 is subset of set4')
else: #set3 == set4
print('Set 3 is same as set4')
Set3 is superset of set4
>>>
>>> # Difference between set3 and set4
>>> set5 = set3 - set4
>>> print('Elements in set3 and not in set4: set5 = ', set5)
Elements in set3 and not in set4: set5 = {1, 2, 3, 5, 6, 7, 8}
>>>
>>> # Check if set4 and set5 are disjoint sets
>>> if set4.isdisjoint(set5):
print('Set4 and set5 have nothing in common\n')
Set4 and set5 have nothing in common
>>> # Removing all the values of set5
>>> set5.clear()
>>> set5 set()