Struktur Data dengan Python – Panduan Lengkap

Diterbitkan: 2021-06-14

Daftar isi

Apa itu Struktur Data?

Struktur data mengacu pada penyimpanan komputasi data untuk penggunaan yang efisien. Ini menyimpan data dengan cara yang dapat dengan mudah dimodifikasi dan diakses. Secara kolektif mengacu pada nilai data, hubungan di antara mereka, dan operasi yang dapat dilakukan pada data. Pentingnya struktur data terletak pada aplikasinya untuk mengembangkan program komputer. Karena program komputer sangat bergantung pada data, pengaturan data yang tepat untuk akses mudah adalah yang terpenting terhadap program atau perangkat lunak apa pun.

Empat fungsi utama dari struktur data adalah:

  • Untuk memasukkan informasi
  • Untuk memproses informasi
  • Untuk menjaga informasi
  • Untuk mengambil informasi

Jenis struktur Data dalam Python

Beberapa struktur data didukung oleh Python untuk kemudahan akses dan penyimpanan data. Tipe struktur data Python dapat diklasifikasikan sebagai tipe data primitif dan non-primitif. Tipe data sebelumnya termasuk Integer, Float, Strings, dan Boolean, sedangkan yang terakhir adalah array, daftar, tupel, kamus, set, dan File. Oleh karena itu, struktur data dalam python adalah struktur data bawaan dan struktur data yang ditentukan pengguna. Struktur data bawaan disebut sebagai struktur data non-primitif.

Struktur Data bawaan

Python memiliki beberapa struktur data yang bertindak sebagai wadah untuk penyimpanan data lain. Struktur data python ini adalah List, Dictionaries, Tuple, dan Sets.

Struktur data yang ditentukan pengguna

Struktur data ini dapat diprogram sebagai fungsi yang sama dengan struktur data bawaan di python . Struktur data yang ditentukan pengguna adalah; Linked List, Stack, Queue, Tree, Graph, dan Hashmap.

Daftar struktur data dan penjelasannya

1. Daftar

Data yang disimpan dalam daftar disusun secara berurutan dan dari tipe data yang berbeda. Untuk setiap data, alamat diberikan dan dikenal sebagai indeks. Nilai indeks dimulai dengan 0 dan berlanjut hingga elemen terakhir. Ini disebut indeks positif. Indeks negatif juga ada jika elemen diakses secara terbalik. Ini disebut pengindeksan negatif.

Pembuatan daftar

Daftar dibuat sebagai tanda kurung siku. Elemen kemudian dapat ditambahkan sesuai. Itu dapat ditambahkan di dalam tanda kurung siku untuk membuat daftar. Jika tidak ada elemen yang ditambahkan, daftar kosong akan dibuat. Jika tidak, elemen dalam daftar akan dibuat.

Memasukkan

my_list = [] #buat daftar kosong

cetak(daftar_saya)

my_list = [1, 2, 3, 'contoh', 3.132] #membuat daftar dengan data

cetak(daftar_saya)

Keluaran

[]

[1, 2, 3, 'contoh', 3.132]

Menambahkan elemen dalam daftar

Tiga fungsi digunakan untuk penambahan elemen dalam daftar. Fungsi-fungsi tersebut adalah append(), extend(), dan insert().

  • Semua elemen ditambahkan sebagai elemen tunggal menggunakan fungsi append().
  • Untuk menambahkan elemen satu per satu dalam daftar, fungsi extend() digunakan.
  • Untuk menambahkan elemen berdasarkan nilai indeksnya, fungsi insert() digunakan.
Memasukkan

daftar_saya = [1, 2, 3]

cetak(daftar_saya)

my_list.append([555, 12]) #tambahkan sebagai elemen tunggal

cetak(daftar_saya)

my_list.extend([234, 'more_example']) #tambahkan sebagai elemen yang berbeda

cetak(daftar_saya)

my_list.insert(1, 'insert_example') #tambahkan elemen i

cetak(daftar_saya)

Keluaran:

[1, 2, 3]

[1, 2, 3, [555, 12]]

[1, 2, 3, [555, 12], 234, 'more_example']

[1, 'insert_example', 2, 3, [555, 12], 234, 'more_example']

Penghapusan elemen dalam daftar

Kata kunci bawaan "del" dalam python digunakan untuk menghapus elemen dari daftar. Namun, fungsi ini tidak mengembalikan elemen yang dihapus.

  • Untuk mengembalikan elemen yang dihapus, fungsi pop() digunakan. Ini menggunakan nilai indeks elemen yang akan dihapus.
  • Fungsi remove() digunakan untuk menghapus elemen berdasarkan nilainya.

Keluaran:

[1, 2, 3, 'contoh', 3.132, 30]

[1, 2, 3, 3.132, 30]

Elemen yang Muncul: 2 Daftar tersisa: [1, 3, 3.132, 30]

[]

Menilai elemen dalam daftar

  • Menilai elemen dalam daftar itu sederhana. Mencetak daftar akan langsung menampilkan elemen.
  • Elemen tertentu dapat dinilai dengan melewati nilai indeks.

Keluaran:

1

2

3

contoh

3.132

10

30

[1, 2, 3, 'contoh', 3.132, 10, 30]

Contoh

[1, 2]

[30, 10, 3.132, 'contoh', 3, 2, 1]

Selain operasi yang disebutkan di atas, beberapa fungsi bawaan lainnya tersedia di python untuk bekerja dengan daftar.

  • len(): fungsi ini digunakan untuk mengembalikan panjang daftar.
  • index(): fungsi ini memungkinkan pengguna untuk mengetahui nilai indeks dari suatu nilai yang dilewatkan.
  • count() fungsi digunakan untuk menemukan jumlah nilai yang diteruskan ke sana.
  • sort() mengurutkan nilai dalam daftar dan memodifikasi daftar.
  • sort() mengurutkan nilai dalam daftar dan mengembalikan daftar.

Keluaran

6

3

2

[1, 2, 3, 10, 10, 30]

[30, 10, 10, 3, 2, 1]

2. Kamus

Kamus adalah jenis struktur data di mana pasangan kunci-nilai disimpan daripada elemen tunggal. Hal ini dapat dijelaskan dengan contoh direktori telepon yang memiliki semua nomor individu beserta nomor teleponnya. Nama dan nomor telepon di sini mendefinisikan nilai konstan yang merupakan “kunci” dan nomor serta nama semua individu sebagai nilai untuk kunci tersebut. Menilai kunci akan memberikan akses ke semua nilai yang disimpan di dalam kunci itu. Struktur nilai kunci yang ditentukan pada Python ini dikenal sebagai kamus.

Pembuatan kamus

  • Kawat gigi bunga menganggur fungsi dict() dapat digunakan untuk membuat kamus.
  • Pasangan nilai kunci harus ditambahkan saat membuat kamus.

Modifikasi dalam pasangan nilai kunci

Setiap modifikasi dalam kamus hanya dapat dilakukan melalui kunci. Oleh karena itu, kunci harus diakses terlebih dahulu dan kemudian modifikasi dilakukan.

Memasukkan

my_dict = {'First': 'Python', 'Second': 'Java'} print(my_dict) my_dict['Second'] = 'C++' #mengubah elemen print(my_dict) my_dict['Third'] = 'Ruby' #menambahkan cetak pasangan nilai kunci(my_dict)

Keluaran:
{'Pertama': 'Python', 'Kedua': 'Java'}
{'Pertama': 'Python', 'Kedua': 'C++'}
{'Pertama': 'Python', 'Kedua': 'C++', 'Ketiga': 'Ruby'}


Penghapusan kamus
Fungsi clear () digunakan untuk menghapus seluruh kamus. Kamus dapat dinilai melalui kunci menggunakan fungsi get() atau meneruskan nilai kunci.

Memasukkan

dict = {'Bulan': 'Januari', 'Musim': 'musim dingin'}

print(dict['Pertama'])

print(dict.get('Kedua')

Keluaran

Januari

Musim dingin

Fungsi lain yang terkait dengan kamus adalah keys(), values(), dan items().

3. Tupel

Mirip dengan daftar, Tuple adalah daftar penyimpanan data, tetapi satu-satunya perbedaan adalah bahwa data yang disimpan dalam tupel tidak dapat dimodifikasi. Jika data di dalam tupel dapat diubah, baru kemudian dimungkinkan untuk mengubah data.

  • Tuples dapat dibuat melalui fungsi Tuple().

Memasukkan

new_tuple = (10, 20, 30, 40)

cetak(tupel_baru)

Keluaran

(10, 20, 30, 40)

  • Elemen dalam tuple dapat dinilai dengan cara yang sama seperti menilai elemen dalam daftar.

Memasukkan

new_tuple2 = (10, 20, 30, 'umur')

untuk x di new_tuple2:

cetak (x)

cetak(new_tuple2)

cetak(new_tuple2[0])

Keluaran

10

20

30

Usia

(10, 20, 30, 'usia')

10

  • Operator '+' digunakan untuk menambahkan tupel lain

Memasukkan

tupel = (1, 2, 3)

tupel = tupel + (4, 5, 6

cetak (tupel)

Keluaran

(1, 2, 3, 4, 5, 6)

4. Setel

Struktur data himpunan mirip dengan himpunan aritmatika. Ini pada dasarnya adalah kumpulan elemen unik. Jika data terus berulang, maka set pertimbangkan untuk menambahkan elemen itu hanya sekali.

  • Satu set dapat dibuat hanya dengan meneruskan nilai ke dalam kurung bunga.

Memasukkan

himpunan = {10, 20, 30, 40, 40, 40}

cetak (set)

Keluaran

{10, 20, 30, 40}

  • Fungsi add() dapat digunakan untuk menambahkan elemen ke set.
  • Untuk menggabungkan data dari dua set, fungsi union() dapat digunakan.
  • Untuk mengidentifikasi data yang ada di kedua set, fungsi interseksi() digunakan.
  • Fungsi perbedaan () hanya mengeluarkan data yang unik untuk set, menghapus data umum.
  • Fungsi symmetric_difference() mengeluarkan data unik untuk kedua set.

Daftar struktur data yang ditentukan pengguna dan penjelasannya

1. Tumpukan

Tumpukan adalah struktur linier yang merupakan struktur Last in First out (LIFO) atau First in Last Out (FIFO). Dua operasi utama yang ada di stack yaitu push dan pop. Push berarti menambahkan elemen di bagian atas daftar sedangkan pop berarti menghapus elemen dari bagian bawah tumpukan. Prosesnya dijelaskan dengan baik pada Gambar 1.

Kegunaan tumpukan

  • Unsur-unsur sebelumnya dapat dinilai melalui penelusuran ke belakang.
  • Pencocokan elemen rekursif.

Sumber

Gambar 1: Representasi grafis dari Stack

Contoh

Keluaran

['pertama kedua ketiga']

['pertama kedua ketiga keempat Kelima']

kelima

['pertama kedua ketiga keempat']

2. Antrian

Mirip dengan tumpukan, antrian adalah struktur linier yang memungkinkan penyisipan elemen di satu ujung dan penghapusan dari ujung lainnya. Kedua operasi tersebut dikenal sebagai enqueue dan dequeue. Elemen yang baru ditambahkan dihapus terlebih dahulu seperti tumpukan. Representasi grafis dari antrian ditunjukkan pada Gambar 2. Salah satu kegunaan utama dari antrian adalah untuk memproses sesuatu segera setelah mereka masuk.

Sumber

Gambar 2 : Representasi grafis dari Antrian

Contoh

Keluaran

['pertama kedua ketiga']

['pertama kedua ketiga keempat Kelima']

pertama

kelima

['kedua', 'ketiga', 'keempat', 'kelima']

3. Pohon

Pohon adalah struktur data non-linier dan hierarkis yang terdiri dari simpul yang dihubungkan melalui tepi. Struktur data pohon python memiliki simpul akar, simpul induk, dan simpul anak. Root adalah elemen paling atas dari struktur data. Pohon biner adalah struktur di mana elemen tidak memiliki lebih dari dua simpul anak.

Kegunaan sebuah pohon

  • Menampilkan hubungan struktural elemen data.
  • Traversal melalui setiap node secara efisien
  • Pengguna dapat menyisipkan, mencari, mengambil dan menghapus data.
  • Struktur data yang fleksibel

Gambar 3: Representasi grafis dari sebuah pohon

Sumber

Contoh:

Keluaran

Pertama

Kedua

Ketiga

4. Grafik

Struktur data non-linear lainnya dalam python adalah grafik yang terdiri dari node dan edge. Secara grafis ini menampilkan satu set objek, dengan beberapa objek yang terhubung melalui tautan. Simpul adalah objek yang saling berhubungan sedangkan tautannya disebut sebagai tepi. Representasi graf dapat dilakukan melalui struktur data kamus python, di mana kunci mewakili simpul dan nilai mewakili tepi.

Operasi dasar yang dapat dilakukan pada grafik

  • Tampilkan simpul dan tepi grafik.
  • Penambahan simpul.
  • Penambahan tepi.
  • Pembuatan grafik

Kegunaan Grafik

  • Representasi grafik mudah dipahami dan diikuti.
  • Ini adalah struktur yang bagus untuk mewakili hubungan terkait yaitu teman-teman Facebook.

Gambar 4: Representasi grafis dari grafik

Sumber

Contoh

g = grafik(4)

g.tepi (0, 2)

g.tepi(1, 3)

g.tepi(3, 2)

g.tepi (0, 3)

g.__repr__()

Keluaran

Daftar ketetanggaan simpul 0

kepala -> 3 -> 2

Daftar ketetanggaan simpul 1

kepala -> 3

Daftar ketetanggaan simpul 2

kepala -> 3 -> 0

Daftar ketetanggaan simpul 3

kepala -> 0 -> 2 -> 1

5. Hashmap

Hashmap adalah struktur data python yang diindeks yang berguna untuk penyimpanan pasangan nilai kunci. Data yang disimpan dalam hashmaps diambil melalui kunci yang dihitung melalui bantuan fungsi hash. Jenis struktur data ini berguna untuk penyimpanan data siswa, detail pelanggan, dll. Kamus dengan python adalah contoh peta hash.

Contoh

Keluaran

0 -> pertama

1 -> detik

2 -> ketiga

0 -> pertama

1 -> detik

2 -> ketiga

3 -> keempat

0 -> pertama

1 -> detik

2 -> ketiga

Kegunaan

  • Ini adalah metode yang paling fleksibel dan dapat diandalkan untuk mengambil informasi daripada struktur data lainnya.

6. Daftar tertaut

Ini adalah jenis struktur data linier. Pada dasarnya, ini adalah serangkaian elemen data yang digabungkan melalui tautan dengan python. Elemen dalam daftar tertaut terhubung melalui pointer. Node pertama dari struktur data ini disebut sebagai header dan node terakhir disebut sebagai tail. Oleh karena itu, daftar tertaut terdiri dari node yang memiliki nilai, dan setiap node terdiri dari pointer yang terhubung ke node lain.

Kegunaan daftar tertaut

  • Dibandingkan dengan array yang diperbaiki, daftar tertaut adalah bentuk entri data yang dinamis. Memori disimpan karena mengalokasikan memori node. Saat berada dalam array, ukurannya harus ditentukan sebelumnya, yang menyebabkan pemborosan memori.
  • Daftar Tertaut dapat disimpan di mana saja di memori. Sebuah node daftar tertaut dapat diperbarui dan dipindahkan ke lokasi yang berbeda.

Gambar 6: Representasi grafis dari Linked List

Sumber

Contoh

Keluaran:

['pertama kedua ketiga']

['pertama', 'kedua', 'ketiga', 'keenam', 'keempat', 'kelima']

['pertama', 'ketiga', 'keenam', 'keempat', 'kelima']

Kesimpulan

Berbagai jenis struktur data dalam python telah dieksplorasi. Baik pemula atau ahli, struktur data dan algoritme tidak dapat diabaikan. Saat melakukan segala bentuk operasi pada data, konsep struktur data memainkan peran penting. Struktur data membantu dalam menyimpan informasi secara terorganisir, sedangkan algoritme membantu memandu seluruh analisis data. Oleh karena itu, baik struktur data dan algoritma python membantu ilmuwan komputer atau pengguna mana pun untuk memproses data mereka.

Jika Anda penasaran untuk mempelajari tentang struktur data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan pakar industri, 1 -on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.

Struktur data mana yang lebih cepat dengan Python?

Dalam kamus, pencarian lebih cepat karena Python menggunakan tabel hash untuk mengimplementasikannya. Jika kita menggunakan konsep Big O untuk mengilustrasikan perbedaan, kamus memiliki kompleksitas waktu yang konstan, O(1), sedangkan daftar memiliki kompleksitas waktu linier, O(n).

Di Python, kamus adalah cara tercepat untuk mencari data dengan ribuan entri sering. Kamus sangat dioptimalkan karena mereka adalah tipe pemetaan bawaan di Python. Namun, dalam kamus dan daftar, ada pertukaran ruang-waktu yang umum. Ini menunjukkan bahwa meskipun kita dapat mengurangi waktu yang diperlukan untuk pendekatan kita, kita perlu menggunakan lebih banyak ruang memori.

Dalam daftar, untuk mendapatkan apa yang Anda inginkan, Anda harus melalui daftar lengkap. Kamus, di sisi lain, akan mengembalikan nilai yang Anda cari tanpa melihat semua kunci.

Mana yang lebih cepat dalam daftar atau larik Python?

Secara umum, daftar Python sangat fleksibel dan dapat menampung data acak yang sepenuhnya heterogen, serta ditambahkan dengan cepat dan dalam perkiraan waktu yang konstan. Mereka adalah cara untuk pergi jika Anda perlu berhemat dan memperluas daftar Anda dengan cepat dan tanpa rasa sakit. Namun, mereka mengambil lebih banyak ruang daripada array, sebagian karena setiap item dalam daftar memerlukan pembuatan objek Python yang terpisah.

Di sisi lain, tipe array.array pada dasarnya adalah pembungkus tipis di sekitar array C. Itu hanya dapat membawa data yang homogen (yaitu, data dari jenis yang sama), maka memori terbatas pada ukuran(satu objek) * panjang byte.

Apa perbedaan antara array dan daftar NumPy?

Numpy adalah paket inti komputasi ilmiah Python. Ia menggunakan objek array multidimensi yang besar serta utilitas untuk memanipulasinya. Array numpy adalah kisi dengan nilai tipe identik yang diindeks oleh tupel bilangan bulat non-negatif.

Daftar disertakan dalam pustaka inti Python. Daftar mirip dengan array di Python, tetapi dapat diubah ukurannya dan berisi elemen dari berbagai jenis. Apa perbedaan nyata di sini? Kinerja adalah jawabannya. Struktur data numpy lebih efisien dalam hal ukuran, kinerja, dan fungsionalitas.