Cara Efektif Mengurutkan Daftar (List Sorting) di Python: Metode sort() vs Fungsi sorted()

1. Apa Itu Penyortiran Daftar (List Sorting) di Python?

Mengapa Penyortiran Daftar Penting?

Penyortiran daftar adalah operasi yang sangat mendasar dan penting dalam manajemen dan analisis data. Dengan menyortir, visibilitas data akan meningkat dan efisiensi pencarian serta perbandingan akan jauh lebih baik. Misalnya, saat memproses data menggunakan Python, mengurutkan angka atau string dapat membuat data yang kompleks lebih mudah dikelola.

Di Python, metode sort() dan fungsi sorted() disediakan untuk menyortir daftar. Dengan menggunakan fitur-fitur ini secara tepat, pemrosesan data yang efisien dapat dilakukan.

2. Menyortir Daftar Menggunakan Metode sort() Python

2.1 Cara Menggunakan Metode sort() Secara Dasar

Metode sort() mengurutkan daftar di tempat, sehingga daftar asli akan diubah. Ini memiliki keuntungan tidak perlu membuat daftar baru, sehingga efisien dalam penggunaan memori. Contoh kode di bawah ini melakukan penyortiran secara menaik (ascending).

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers) # [1, 2, 5, 5, 6, 9]

2.2 Cara Menyortir Secara Menurun (Descending)

Jika Anda ingin mengurutkan secara menurun, gunakan argumen reverse=True.

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)
print(numbers) # [9, 6, 5, 5, 2, 1]

2.3 Efisiensi Memori dan Skenario Penggunaan

Metode sort() sangat efektif terutama saat ingin menghemat memori. Karena mengubah daftar asli, metode ini memiliki keuntungan mengurangi penggunaan memori ketika perlu memproses data dalam jumlah besar secara efisien.

3. Menyortir Daftar Menggunakan Fungsi sorted()

3.1 Cara Menggunakan Fungsi sorted() Secara Dasar

Fungsi sorted() mengembalikan daftar baru tanpa mengubah daftar asli. Ini berguna ketika Anda memerlukan daftar yang telah disortir sambil tetap mempertahankan daftar asli. Contoh di bawah ini menggunakan sorted() untuk mengurutkan secara menaik (ascending).

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 2, 5, 5, 6, 9]
print(numbers) # [5, 2, 9, 1, 5, 6] # Daftar asli tidak berubah

3.2 Perbedaan dengan Metode sort()

Fungsi sorted() berbeda dengan metode sort() karena fungsi ini menghasilkan dan mengembalikan daftar baru. Jika Anda ingin mempertahankan daftar asli atau ingin memiliki beberapa daftar yang diurutkan dengan urutan yang berbeda, memilih fungsi sorted() adalah pilihan yang tepat.

4. Penyortiran Bersyarat dengan Parameter key

4.1 Menyortir dengan Kondisi Kustom

sort() dan sorted() dapat diurutkan berdasarkan kondisi tertentu menggunakan argumen key. Misalnya, untuk mengurutkan daftar string berdasarkan panjangnya, lakukan seperti berikut:

words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words) # ['date', 'apple', 'banana', 'cherry']

4.2 Menyortir dengan Mengabaikan Huruf Besar/Kecil

Jika Anda ingin mengabaikan huruf besar/kecil saat mengurutkan string, gunakan key=str.lower.

words = ['Apple', 'banana', 'Cherry', 'date']
sorted_words = sorted(words, key=str.lower)
print(sorted_words) # ['Apple', 'banana', 'Cherry', 'date']

4.3 Penyortiran Lanjutan Menggunakan Fungsi Lambda

Menggunakan fungsi Lambda, penyortiran bersyarat yang kompleks juga dimungkinkan. Contoh di bawah ini mengurutkan tuple dalam daftar berdasarkan elemen kedua.

pairs = [(1, 3), (2, 1), (3, 2)]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs) # [(2, 1), (3, 2), (1, 3)]

 

侍エンジニア塾

5. Perbedaan Kinerja Antara sort() dan sorted()

5.1 Perbandingan Kinerja

Baik sort() maupun sorted() sama-sama menggunakan algoritma Timsort, yang umumnya cepat. Namun, sort() mengurutkan daftar itu sendiri di tempat, sehingga konsumsi memorinya lebih rendah dan memiliki keuntungan kinerja terutama untuk dataset skala besar. Di sisi lain, sorted() menghasilkan daftar baru, sehingga mengonsumsi lebih banyak memori, tetapi menguntungkan dalam situasi di mana daftar asli perlu dipertahankan.

5.2 Poin Penting dalam Penggunaan

Untuk pemrosesan data dalam jumlah besar secara efisien, direkomendasikan untuk menggunakan sort() yang efisien memori. Sementara itu, sorted() lebih cocok jika Anda perlu mempertahankan data asli atau membuat beberapa daftar dengan kriteria pengurutan yang berbeda.

6. FAQ

6.1 Apa perbedaan utama antara sort() dan sorted()?

Metode sort() mengubah daftar di tempat dan mengembalikan None. Sedangkan, fungsi sorted() mengembalikan daftar baru dan daftar asli tidak diubah.

6.2 Bagaimana cara menyortir daftar dengan kondisi kompleks di Python?

Anda dapat menyortir daftar berdasarkan kondisi kompleks dengan meneruskan fungsi Lambda atau fungsi kustom lainnya ke parameter key.

6.3 Apa perbedaan antara metode reverse() dan sort(reverse=True)?

Metode reverse() hanya membalik urutan daftar, tidak melakukan penyortiran. Sedangkan, sort(reverse=True) mengurutkan daftar secara menurun (descending).