Salah satu keuntungan besar menggunakan Python adalah kesederhanaannya. Sangat mudah untuk bekerja dengannya karena perpustakaan standarnya memiliki banyak fungsi yang berguna. Salah satu fungsi tersebut adalah fungsi yang diurutkan.
Fungsi ini digunakan untuk mengurutkan iterable berdasarkan beberapa urutan. Tanpa fungsi seperti itu, seseorang harus menulis kode yang menerapkan algoritme pengurutan seperti Bubble Sort atau Insertion Sort. Ini seringkali sulit, tetapi Python menyediakan cara yang lebih sederhana, yang akan kami bahas dalam artikel ini.
Daftar isi
Pengantar Fungsi Diurutkan
Fungsi yang diurutkan adalah fungsi yang mengurutkan iterables dengan Python. Iterable adalah nilai apa pun yang dapat Anda ulangi. Contoh iterable termasuk string, list, tuple, dan set. Iterables ini seringkali tidak berurutan, dan penyortiran menempatkan nilainya dalam urutan tertentu. Mengurutkan nilai sangat membantu karena:
- Pencarian dengan nilai lebih cepat dan lebih efisien menggunakan algoritma seperti Pencarian Biner. Namun, pencarian biner membutuhkan nilai untuk diurutkan terlebih dahulu.
- Untuk menampilkan nilai. Terkadang pengguna ingin melihat informasi yang diurutkan, misalnya harga terendah terlebih dahulu atau postingan terbaru terlebih dahulu. Ini akan membutuhkan penerapan beberapa cara untuk menyortir daftar nilai.
- Saat melakukan analisis statistik, misalnya, menemukan nilai yang paling sering muncul dalam suatu himpunan. Hal ini lebih mudah dilakukan jika nilai diurutkan secara berurutan.
Panduan Penggunaan Fungsi Terurut
Seperti disebutkan sebelumnya, fungsi yang diurutkan berfungsi dengan semua iterables. Pada gilirannya, ini mengembalikan daftar yang telah diurutkan. Ini penting untuk diperhatikan – meskipun input dapat berupa iterable apa pun, nilai kembalian harus selalu berupa daftar.
Sintaks Fungsi Diurutkan
Tanda tangan fungsi dari fungsi yang diurutkan adalah sebagai berikut:
sorted(iterable, key=None, reverse=False)
Seperti yang Anda lihat, satu-satunya argumen yang diperlukan adalah iterable, yang akan diurutkan.
Argumen berikut adalah kuncinya. Key adalah fungsi yang akan digunakan untuk mentransformasi setiap elemen pada iterable untuk mendapatkan nilai yang akan digunakan untuk sorting. Ini akan berguna untuk menyortir daftar kamus, seperti yang akan Anda lihat nanti. Nilai defaultnya adalah none, sehingga tidak akan menerapkan fungsi apa pun kecuali ditentukan.
Argumen terakhir adalah argumen terbalik. Jika disetel ke true, item akan diurutkan dalam urutan terbalik.
Di bagian selanjutnya, saya akan menggunakan contoh untuk mendemonstrasikan cara menggunakan fungsi.
Contoh Penggunaan Fungsi yang Diurutkan
Daftar Angka
Kasus paling sederhana dari pengurutan nilai adalah pengurutan daftar angka. Perhatikan contoh kode berikut:
# A list of unsorted values numbers = [8, 4, 3, 9, 2, 0, 3] # Sorting the numbers sorted_numbers = sorted(numbers) # Outputting the sorted values print(sorted_numbers)
Outputnya adalah:
[0, 2, 3, 3, 4, 8, 9]
Seperti yang Anda lihat, nilai telah diurutkan dalam urutan menaik. Anda akan menyetel terbalik ke true jika Anda ingin mengurutkannya dalam urutan menurun. Oleh karena itu baris 4 pada contoh kode sebelumnya adalah:
sorted_numbers = sorted(numbers, reverse=True)
Output dari menjalankan program yang dimodifikasi adalah:
[9, 8, 4, 3, 3, 2, 0]
Daftar String
Fungsi yang disortir mendukung lebih dari sekadar angka. Anda juga dapat mengurutkan string. Untuk mengurutkan string dalam daftar, karakter pertama string dibandingkan. Perbandingan dilakukan pada nilai ASCII karakter. Misalnya, ‘halo’ akan muncul sebelum kata ‘dunia’ karena nilai ASCII ‘h’ adalah 104, kurang dari nilai ASCII ‘w’, 119.
Jika satu atau lebih string memiliki karakter pertama yang sama, karakter kedua dan selanjutnya dibandingkan hingga beberapa urutan ditemukan. Berikut adalah contoh kode dimana kita mengurutkan nama orang.
# Creating a list of names members_list = ['bob', 'dave', 'charlie', 'alice'] # Sorting the names sorted_members_list = sorted(members_list) # Printing the names print(sorted_members_list)
Ini akan menghasilkan output berikut:
['alice', 'bob', 'charlie', 'dave']
Karena nilai ASCII digunakan, pengurutan string bergantung pada karakter mana yang muncul lebih dulu dalam tabel ASCII. Misalnya, karakter huruf besar akan muncul sebelum huruf kecil karena karakter huruf besar muncul sebelum huruf kecil di ASCII. Berikut tabel ASCII lengkap untuk referensi Anda:
Sumber: commons.wikimedia.org
Iterable Lainnya – String, Tuple, dan Set
Seperti yang saya sebutkan, fungsi sortir bekerja dengan semua jenis iterables. Aturan yang sama berlaku untuk bagaimana nilai dalam iterables akan diurutkan. Ini contohnya:
# Printing a sorted string print(sorted("dijkstra")) # Printing a sorted tuple of values print(sorted((3, 4, 2, 1, 5, 0))) # Printing a sorted set of values print(sorted(set([4, 5, 5, 1, 3, 8, 9])))
Output dari ini akan menjadi:
['a', 'd', 'i', 'j', 'k', 'r', 's', 't'] [0, 1, 2, 3, 4, 5] [1, 3, 4, 5, 8, 9]
Seperti yang Anda lihat, keluaran dalam setiap kasus adalah daftar.
Daftar Kamus
Anda juga dapat menerapkan fungsi sortir untuk mengurutkan daftar kamus. Namun, menyortir kamus sedikit lebih rumit. Ini karena, tidak seperti angka atau string, kamus memiliki banyak properti, masing-masing sama validnya untuk perbandingan.
Jadi untuk mengurutkan kamus, Anda menentukan fungsi yang akan meringkas seluruh kamus menjadi satu nilai yang akan digunakan untuk perbandingan. Fungsi ini akan diteruskan ke fungsi yang diurutkan sebagai argumen kunci. Berikut ini contoh untuk diilustrasikan:
people = [ { 'name': 'Alice', 'age': 27 }, { 'name': 'Bob', 'age': 23 }, { 'name': 'Charlie', 'age': 25} ] people_sorted_by_age = sorted(people, key=lambda person: person['age']) print(people_sorted_by_age)
Dalam contoh ini, kami memiliki tiga orang yang diwakili oleh objek kamus. Setiap objek memiliki atribut nama dan umur. Kami ingin mengurutkan orang berdasarkan usia. Oleh karena itu, saat kita memanggil fungsi yang diurutkan, kita meneruskan fungsi sebagai argumen kunci.
Fungsi ini akan mengambil objek kamus seseorang dan mengembalikan usia orang tersebut. Nilai pengembalian kunci ini akan digunakan untuk menyortir. Oleh karena itu seluruh kamus telah diringkas menjadi bilangan bulat sederhana yang dapat dibandingkan. Untuk kesederhanaan, saya telah menggunakan fungsi lambda untuk menentukan argumen kunci.
Menjalankan kode akan menghasilkan output berikut:
[{'name': 'Bob', 'age': 23}, {'name': 'Charlie', 'age': 25}, {'name': 'Alice', 'age': 27}]
Kasus Penggunaan Argumen Kunci
Argumen kunci tidak harus digunakan saat menyortir kamus saja. Anda dapat menggunakannya pada semua nilai. Kegunaannya adalah untuk menyediakan kunci yang dapat digunakan untuk mengurutkan nilai. Berikut adalah contoh kasus penggunaan:
- Mengurutkan nilai melalui pendefinisian fungsi kunci yang mengambil nilai dan mengembalikan panjang nilai.
- Menyortir string dalam daftar dengan cara yang tidak peka huruf besar-kecil. Untuk melakukannya, setiap string dalam daftar dapat diubah menjadi huruf kecil. Ini dapat dicapai dengan mendefinisikan fungsi kunci yang mengambil nilai kunci dari string dan mengembalikan versi huruf kecil dari string.
- Mengurutkan nilai berdasarkan nilai gabungan yang menggabungkan nilai entri lainnya.
Kompleksitas Runtime dari Fungsi yang Diurutkan
Fungsi yang diurutkan memiliki kompleksitas runtime O(n log n), di mana n adalah jumlah elemen dalam iterable input. Kompleksitas ini muncul karena fungsi tersebut menggunakan algoritma Timsort, yaitu algoritma pengurutan hybrid berdasarkan penggabungan dan penyisipan.
Kompleksitas ruang dari fungsi tersebut adalah O(n), di mana n masih merupakan jumlah elemen dalam input. Ini karena daftar baru dibuat dan dikembalikan.
Fungsi Sortir vs. Fungsi Sortir
Pilihan lain untuk menyortir nilai adalah fungsi sortir. Bagian ini akan menjelaskan perbedaan utama antara fungsi sortir dan sortir.
- Fungsi sortir memodifikasi iterable pada tempatnya, sedangkan fungsi sortir membuat daftar baru dan mengembalikannya.
- Karena modifikasi dilakukan di tempat, pengurutan membutuhkan input berupa daftar. Di sisi lain, sortir dapat mengambil iterable apa saja sebagai masukan yang kemudian akan digunakan untuk membuat daftar baru yang akan dimodifikasi dan dikembalikan.
Kata Akhir
Pada artikel ini, kami membahas fungsi yang diurutkan – apa itu, bagaimana menggunakannya, dan berbagai argumen yang diperlukan. Kami juga membahas berbagai contoh penggunaan fungsi dan kompleksitas waktu prosesnya dan membandingkannya dengan fungsi pengurutan.
Selanjutnya, Anda mungkin ingin membaca artikel kami tentang Fungsi Sum Python.