Pelajari Struktur Data Daftar Python - Bagian 1


Struktur Data adalah kumpulan tipe data, hubungan antar tipe data, dan fungsi atau operasi yang dapat diterapkan pada data. Tipe data dapat berupa string, Integer, Nilai mengambang dan seterusnya.

Apa perbedaan antara objek yang Dapat Diubah/Tidak Dapat Diubah?
Objek yang Dapat Diubah
  1. Objek yang statusnya dapat diubah setelah dibuat seperti menambah, memperbarui, atau menghapus elemen.
  2. Daftar, Kamus, Set, bytearray adalah tipe objek yang bisa berubah dengan python.
Objek yang Tidak Dapat Diubah
  1. Status objek tidak dapat diubah. Setelah objek dibuat, kita tidak dapat menambah, menghapus, atau memperbarui elemen.
  2. String, Integer, Tuples, Frozenset adalah beberapa tipe objek yang tidak dapat diubah di python.
Apa perbedaan antara struktur data Homogen/Heterogen?
  1. Struktur Data Homogen – Elemen data akan memiliki tipe data yang sama (misal: Array).
  2. Struktur Data Heterogen – Elemen data tidak boleh memiliki tipe data yang sama (misal: Daftar, Tupel, Kumpulan, dll…).
Apa tipe data Primitif dan Non-Primitif?

Sebelum memahami fungsionalitas struktur data bawaan, mari kita lihat beberapa fungsi bawaan yang akan digunakan dengan objek struktur data.

  • dir(obj) – fungsi bawaan yang akan mengembalikan atribut dan metode.
  • len(obj) – Mengembalikan panjang (jumlah item) suatu objek. Argumennya bisa berupa urutan (seperti string, byte, tupel, daftar, atau rentang) atau kumpulan (seperti kamus, himpunan, atau himpunan beku).
  • del – Kata kunci bawaan ini digunakan untuk menghapus objek dari namespace atau menghapus item dari objek seperti daftar, kamus, dll.
  • type(obj) – Fungsi type() akan mengembalikan tipe objek atau mengembalikan objek tipe baru berdasarkan argumen yang diteruskan.
  • id() – Fungsi ini mengembalikan “identitas” suatu objek. Ini adalah bilangan bulat yang dijamin unik dan konstan untuk objek ini selama masa pakainya.

Sekarang setelah Anda melihat beberapa detail penting, mari kita lanjutkan dengan struktur data python.

Python hadir dengan struktur data bawaan dan pengguna dapat menentukan struktur datanya sendiri. Struktur data bawaan mencakup LIST, KAMUS, TUPLE, dan SET. Beberapa contoh struktur data yang ditentukan pengguna adalah STACK, QUEUES, TREE, HASHMAP, dll…

Orang yang berasal dari bahasa pemrograman lain akan sangat familiar dengan tipe array. Namun dalam python, hal tersebut tidak begitu umum.

Di sini daftarnya mirip dengan array tetapi daftar memungkinkan kita untuk menyimpan nilai dari tipe data apa pun (Heterogen) sementara array hanya akan menampung data dari tipe tertentu (int, float, dll…). Untuk menggunakan array, Anda harus mengimpor array dari modul “array” secara eksplisit.

Dalam rangkaian artikel Python ini, kita akan melihat apa yang dimaksud dengan struktur data dan struktur data bawaan python.

DAFTAR

Daftar adalah struktur data yang merupakan kumpulan tipe data berbeda. Apa yang dimaksud dengan “pengumpulan tipe data berbeda ”? Daftar dapat menyimpan string, Integer, Nilai titik mengambang, Daftar bersarang, dan seterusnya.

Objek Daftar bersifat “Dapat Diubah ” yang berarti item yang dibuat di dalam daftar dapat Diakses, diubah, atau dihapus. Daftar pengindeksan dukungan. Setiap item dalam daftar ditetapkan ke sebuah alamat dan alamat tersebut dapat digunakan untuk mengakses atau mengubah nilai item tertentu.

  • Buat daftar
  • Sisipkan/Akses/Ubah daftar
  • Hapus daftar

BUAT DAFTAR

Daftar dapat dibuat menggunakan tanda kurung siku.

>>> name_empty = []			# Empty list
>>> name = ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# list with string data type
>>> name_int = [1,2,3]			# list with Integer data type
>>> name_mixed = [name_int,name,1,2,3.14]	# list with nested list items.
>>> name_mixed
[[1, 2, 3], ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'], 1, 2, 3.14]
>>> name_int
[1, 2, 3]

Kita dapat menggunakan fungsi type() bawaan untuk memeriksa jenis objek.

>>> type(name)

Kita dapat mengakses metode dan atribut dari instance daftar menggunakan fungsi dir().

>>> dir(name)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Kita dapat mengetahui jumlah total item dalam daftar menggunakan metode len().

>>> len(name)

Kita dapat membuat daftar baru dari daftar yang sudah ada menggunakan metode list.copy().

>>> name_new = name.copy()
>>> name_new
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

MEMASUKKAN/MENGAKSES/MEMODIFIKASI DAFTAR

Kita dapat memasukkan item ke dalam daftar di posisi mana pun menggunakan metode list.insert(i, x).

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name
['Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.insert(0,'Tom')	# Insert method takes 2 arguments (Index position, Item)
>>> name
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# Tom is inserted at the 0th position.

Kita dapat menggunakan metode list.append(x) untuk menambahkan satu item ke dalam daftar. Ini akan memasukkan item ke akhir daftar.

>>> name = []
>>> len(name)
0
>>> name.append('Leo')
>>> name.append('Matt')
>>> name.append('Kane')
>>> print(name)
['Leo', 'Matt', 'Kane']

Kita dapat menggunakan metode list.extend() untuk menambahkan beberapa item ke dalam daftar.

>>> new_name = ['Gowtham','Martin','Luis']
>>> name.extend(new_name)
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']

Kita juga bisa menggunakan operator '+' untuk menggabungkan dua daftar. Kedua daftar tersebut dapat berupa tipe data yang berbeda.

>>> a = [1,2,3]
>>> b = [2,3,3]
>>> c = a + b
>>> c
[1, 2, 3, 2, 3, 3]
>>> d = ['karthi','kenny']
>>> e = a + d
>>> e
[1, 2, 3, 'karthi', 'kenny']

Seperti yang telah dinyatakan, objek daftar dapat berubah. Item daftar dapat dimodifikasi dengan mereferensikan posisi indeks dan memberikan nilai padanya.

>>> name									# Before modified
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[0] = 'Karthi'
>>> name									# After Modified
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

Daftar mendukung pengindeksan positif dan negatif.

Pengindeksan dimulai dari 0 dan Pengindeksan Negatif dimulai dari -1.

Kita dapat mengakses item daftar menggunakan posisi indeksnya.

>>> name[0]			# Accessing the List item at index 0
'Leo'
>>> name[1]
'Matt'
>>> name[4]
'Petter'
>>> name[5]
'Will'
>>> name[-1]			# Accessing the list item with negative indexing
'Will'
>>> name[-6]
'Leo'

Kita juga dapat menggunakan slicing untuk mengakses item dalam daftar. Slicing memungkinkan kita mengakses serangkaian item dengan menentukan parameter awal, akhir, dan Langkah.

SYNTAX: list[starting position, ending position, Step]

>>> name[0:3]
['Tom', 'Leo', 'Matt']
>>> name[:]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[:4]
['Tom', 'Leo', 'Matt', 'Kane']
>>> name[:-2]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott']
>>> name[:-1]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter']
>>> name[:-1:2]
['Tom', 'Matt', 'Scott']

Kita dapat menemukan jumlah kemunculan untuk nilai tertentu menggunakan metode list.count(x).

>>> name_int = [1,1,2,3,1]
>>> name_int.count(1)
3

Kita dapat menemukan posisi Indeks suatu item menggunakan metode list.index(x[, start[, end]]).

>>> name			# Inserted ‘Will’ at the end of the list. Now we have 2 name ‘Will’.
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will']
>>> name.index('Will)	# Returns the index position of first occurence of x.
0
>>> name.index('Will',2)	# Starting index positon’2’ is given.
7
>>> name.index('Will',2,4)	# Starting and Ending Index position is given. Since there is no 					occurence of ‘Will’ within the given search position it will throw 					Value Error.
Traceback (most recent call last):
File "<stdin>", line 1, in 
ValueError: 'Will' is not in list

Kita dapat menggunakan metode list.reverse() untuk membalikkan item dalam daftar.

>>> name
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.reverse()
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi']

HAPUS DAFTAR

Kita dapat menggunakan metode list.pop(x) untuk menghapus item dari daftar pada posisi x. Fungsi ini akan menghapus item dari daftar dan menampilkan item yang dihapus. Jika x tidak ditentukan maka metode pop() akan mengembalikan item terakhir dari daftar.

>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop(0)
'Will'
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop()
'Luis'

Kita juga dapat menggunakan metode list.remove (x) untuk menghapus item dari daftar. Di sini x mengambil nilai item dan menampilkan ValueError jika x tidak ada dalam daftar.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name.remove('Leo')
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.remove('Leo')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: list.remove(x): x not in list

Kita dapat mengosongkan daftar dengan memberi nama daftar dalam tanda kurung siku atau menggunakan metode list.clear().

>>> name1 = name.copy()
>>> name1
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name = []			
>>> name
[]
>>> name1.clear()		
>>> name1
[]

Daripada menggunakan metode daftar untuk mengosongkan daftar atau menghapus item dari daftar, kita dapat menggunakan kata kunci bawaan del untuk melakukan tindakan ini. Kata kunci “del” dapat menghapus objek daftar dari memori atau menghapus item dari daftar atau menghapus item dari potongan.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> del name[0]
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> del name[-3:]
>>> name
['Matt', 'Kane']
>>> del name[:]
>>> name
[]

Fungsi id() bawaan mengembalikan “identitas ” suatu objek. Ini adalah bilangan bulat yang dijamin unik dan konstan untuk objek ini selama masa pakainya.

>>> id(name)
139979929658824
>>> del name
>>> id(name)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'name' is not defined

Catatan: kami telah menghapus variabel daftar dari memori menggunakan del(), sehingga menimbulkan kesalahan nama.

help() funtion:

Bantuan bawaan function() sangat berguna untuk mendapatkan detail tentang objek tertentu atau metode objek tersebut.

help(object)
help(object.method)
Ringkasan

Sejauh ini dalam artikel ini, kita telah melihat bagaimana kita dapat menggunakan struktur data daftar untuk menyimpan, mengakses, memodifikasi, menghapus objek daftar dengan menggunakan metode daftar. Kita juga telah melihat beberapa fungsi bawaan seperti id(), dir(), type(), help()< yang merupakan fungsi yang sangat efektif. Kami juga memiliki pemahaman daftar dengan python yang menyediakan cara yang lebih ringkas dan mudah dibaca untuk membuat daftar.