0Pricing
Coding Interview Prep · Ders

functools.cmp_to_key ile Özel Sıralama

Anahtarlar yetersiz kaldığında bir karşılaştırıcı yazın.

functools.cmp_to_key ile Özel Sıralama, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Bir key İfade Edemediğinde

Bazı sıralamalar, her öğenin tek bir değerine değil, iki öğenin birlikte karşılaştırılmasına bağlıdır. Bu durumda key yerine bir karşılaştırıcı işlevi yazarsınız.

Bir Karşılaştırıcı Ne Döndürür

Bir karşılaştırıcı, a ve b adlı iki öğe alır. a önce geliyorsa negatif, b önce geliyorsa pozitif, eşitlerse sıfır bir sayı döndürün.

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

cmp_to_key ile Uyarlayın

Python sort yalnızca bir key kabul eder. Bu nedenle karşılaştırıcınızı kullanılabilir bir key'e dönüştürmek için functools.cmp_to_key ile sarın.

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

Klasik En Büyük Sayı Problemi

Sayıları birleştirerek en büyük dizeyi oluşturmak için ikilileri, hangi birleştirmenin daha büyük olduğuna göre karşılaştırın. Basit bir key bunu ifade edemez.

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

Bu Karşılaştırma Hilesini Okuyun

İfade, a+b daha büyük bir birleştirme olduğunda -1 döndürür; bu nedenle a, b'den önce sıralanır. Böylece oluşturulabilecek en büyük sayı elde edilir.

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

Önemli Olan İşarettir

Sıralama yalnızca sonucun işaretini okur. -2 veya -100 döndürmek, -1 ile aynı şekilde davranır; bu nedenle tam büyüklük konusunda endişelenmeyin.

Karşılaştırıcıları Tutarlı Tutun

Karşılaştırıcınız tutarlı olmalıdır: a, b'den üstün ve b de c'den üstünse a da c'den üstün olmalıdır. Çelişkiler anlamsız bir sıra oluşturur.

Mümkünse key'i Tercih Edin

Bir key her öğe için bir kez hesaplanır; karşılaştırıcı ise birçok ikili üzerinde çalışır ve daha yavaştır. Yalnızca key gerçekten işe yaramadığında cmp_to_key kullanın.

Çıkarma Kısayolu

Sayısal karşılaştırmalarda doğrudan a - b döndürebilirsiniz; çünkü işareti zaten sırayı belirtir. Tam sayılar için kısa ve güvenlidir.

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

Ondalıklı Sayılara Dikkat Edin

Ondalıklı sayılarda a - b işlemi çok küçük bir değere veya sıfıra yuvarlanabilir. Hatalı eşitlikleri önlemek için açık dallanmalarla karşılaştırın.

Karşılaştırıcılar Özel Sıralamaların Önünü Açar

Birleştirme sırası, özel sıralamalar ve kurala dayalı eşitliklerin tümü mümkün hâle gelir. Bir karşılaştırıcı, karmaşık sıralamalar için başvurabileceğiniz çözümdür.

Hızlı Kontrol

Karşılaştırıcınız cmp(a, b) için negatif bir sayı döndürüyor.

Özet

Bir karşılaştırıcıyı cmp_to_key ile sararak key'in ifade edemediği sıralamaları uygulayabilirsiniz. Bir işaret döndürün, tutarlı kalın ve mümkün olduğunda key'leri tercih edin. 🧩

Sıkça Sorulan Sorular

“functools.cmp_to_key ile Özel Sıralama” dersi ücretsiz mi?

Evet — “functools.cmp_to_key ile Özel Sıralama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“functools.cmp_to_key ile Özel Sıralama” dersinde ne öğreneceğim?

Anahtarlar yetersiz kaldığında bir karşılaştırıcı yazın. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“functools.cmp_to_key ile Özel Sıralama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. sorted() ve key İşlevi
  2. Birden Çok Alana Göre Sıralama
  3. functools.cmp_to_key ile Özel Sıralama
  4. Önce Sıralamanın Çözümlerin Önünü Açması
← Coding Interview Prep Sayfasına Dön