Coding Interview Prep · Pelajaran

Urutan Kustom dengan functools.cmp_to_key

Menulis pembanding saat key tidak memadai

Pelajaran 3 dari 413 langkah

Urutan Kustom dengan functools.cmp_to_key adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Saat key Tidak Dapat Menyatakannya

Beberapa urutan bergantung pada perbandingan dua item secara bersamaan, bukan masing-masing satu nilai. Untuk kasus tersebut, Anda menulis fungsi pembanding alih-alih key.

Apa yang Dikembalikan Pembanding

Pembanding menerima dua item a dan b. Kembalikan bilangan negatif jika a berada lebih dahulu, positif jika b berada lebih dahulu, dan nol jika keduanya seri.

def cmp(a, b):
    if a < b: return -1
    if a > b: return 1
    return 0

Hubungkan dengan cmp_to_key

sort Python hanya menerima key, jadi bungkus pembanding Anda dengan functools.cmp_to_key agar berubah menjadi key yang dapat digunakan.

from functools import cmp_to_key
items.sort(key=cmp_to_key(cmp))

Masalah Klasik Bilangan Terbesar

Untuk menggabungkan bilangan menjadi string terbesar, bandingkan pasangan berdasarkan penggabungan mana yang lebih besar. key biasa tidak dapat menangkap aturan ini.

def cmp(a, b):
    return (a + b < b + a) - (a + b > b + a)

Pahami Trik Perbandingan Itu

Ekspresi tersebut mengembalikan -1 ketika a+b menghasilkan gabungan yang lebih besar, sehingga a diurutkan sebelum b. Dengan begitu, terbentuk bilangan terbesar yang mungkin.

nums = ["3", "30", "34"]
nums.sort(key=cmp_to_key(cmp))
print("".join(nums))   # 34330

Yang Penting Adalah Tandanya

Pengurutan hanya membaca tanda hasilnya. Mengembalikan -2 atau -100 berperilaku sama seperti -1, jadi Anda tidak perlu mengkhawatirkan besar nilai pastinya.

Jaga Konsistensi Pembanding

Pembanding Anda harus konsisten: jika a mengungguli b dan b mengungguli c, maka a harus mengungguli c. Kontradiksi menghasilkan urutan yang kacau.

Utamakan key Jika Memungkinkan

key dihitung sekali untuk setiap item, tetapi pembanding dijalankan pada banyak pasangan sehingga lebih lambat. Gunakan cmp_to_key hanya ketika key benar-benar tidak dapat digunakan.

Pintasan Pengurangan

Untuk perbandingan numerik, Anda dapat langsung mengembalikan a - b karena tandanya sudah menyatakan urutannya. Singkat dan aman untuk bilangan bulat.

items.sort(key=cmp_to_key(lambda a, b: a - b))

Waspadai Bilangan Pecahan

Pada bilangan pecahan, a - b dapat dibulatkan menjadi nilai yang sangat kecil atau nol. Lakukan perbandingan dengan cabang eksplisit untuk menghindari seri yang salah.

Pembanding Membuka Urutan Khusus

Urutan penggabungan, peringkat khusus, dan seri berdasarkan aturan semuanya menjadi mungkin. Pembanding adalah jalan keluar untuk pengurutan yang rumit.

Pemeriksaan Cepat

Pembanding Anda mengembalikan bilangan negatif untuk cmp(a, b).

Ringkasan

Anda dapat membungkus pembanding dengan cmp_to_key untuk menyatakan urutan yang tidak dapat diungkapkan oleh key. Kembalikan tandanya, jaga konsistensi, dan utamakan key jika memungkinkan. 🧩

Gratis untuk memulai

Belajar Coding Interview Prep dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
90
Pelajaran
360

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Urutan Kustom dengan functools.cmp_to_key” gratis?

Ya — teks lengkap “Urutan Kustom dengan functools.cmp_to_key” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Urutan Kustom dengan functools.cmp_to_key”?

Menulis pembanding saat key tidak memadai Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Urutan Kustom dengan functools.cmp_to_key” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?

Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. sorted() dan Fungsi key
  2. Mengurutkan Berdasarkan Banyak Field
  3. Urutan Kustom dengan functools.cmp_to_key
  4. Mengapa Mengurutkan Dahulu Membuka Solusi
← Kembali ke Coding Interview Prep