Competitive Programming Academy · Ders

Yalnızca Değeri Değil, İndeksi de Bulma

enumerate ile konumları izleyin.

4. ders / 413 adım

Yalnızca Değeri Değil, İndeksi de Bulma, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 4. 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, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

Konumlar Önemlidir

Çoğu zaman yanıt değer değil, onun nerede bulunduğudur. Yarışma problemleri sık sık 1 tabanlı veya 0 tabanlı bir dizin ister; bu nedenle konumları izleyin.

a = [4, 1, 7, 3]

.index() ile Bulun

a.index(x) ilk eşleşmenin konumunu döndürür. Yazması kolaydır ancak soldan sağa O(n) zamanda tarama yapar.

pos = a.index(7)  # 2

Eksik Değerler Hata Oluşturur

Değer yoksa .index() bir ValueError oluşturarak çalışma zamanında çöker. Emin olmadığınızda önce üyeliği kontrol edin.

if x in a:
    pos = a.index(x)

enumerate ile Döngü Kurun

enumerate her adımda dizini ve değeri birlikte verir; tarama sırasında konumları izlemek için en temiz yöntem budur.

for i, v in enumerate(a):
    print(i, v)

enumerate İşlemine Birden Başlayın

Birçok değerlendirici 1 tabanlı konumlar ister. İlk dizinin 1 olması ve problem metniyle eşleşmesi için enumerate çağrısına start=1 verin.

for i, v in enumerate(a, start=1):
    ...

En Büyük Değerin Dizini

En büyüğün nerede olduğunu bulmak için tarama yapıp en iyi dizini hatırlayın; çünkü tek başına max(a) yalnızca değeri verir.

best = 0
for i, v in enumerate(a):
    if v > a[best]:
        best = i

Şık bir argmax

Kısa bir teknik kullanabilirsiniz: her dizini kendi değeriyle eşleştirin ve değere göre max seçin. range konumu doğrudan verir.

best = max(range(len(a)), key=lambda i: a[i])

Eşleşen Tüm Dizinleri Toplayın

Bir değerin her konumuna mı ihtiyacınız var? enumerate üzerinde bir liste üreteci kullanarak tüm eşleşmeleri tek satırda toplayın.

idx = [i for i, v in enumerate(a) if v == 7]

Değeri Dizine Eşleyin

Tekrarlanan aramalar için bir kez değerden dizine bir sözlük oluşturun; böylece sonraki her arama O(1) zamanda sonuçlanır.

where = {v: i for i, v in enumerate(a)}

Yinelenen Değerlerde Dikkatli Olun

Değerden dizine oluşturulan sözlük yalnızca son oluşumu tutar. Yinelenenler önemliyse her anahtar için bir liste veya enumerate kullanın.

where = {}
for i, v in enumerate(a):
    where.setdefault(v, []).append(i)

Dizin Tabanları Arasında Dönüşüm Yapın

Tabana dikkat edin: 0 tabanlı olarak sakladığınız bir değeri 1 tabanlı yazdırmanız gerekiyorsa bir ekleyin. Tabanları karıştırmak, fark edilmesi zor bir yanlış yanıt tuzağıdır.

print(pos + 1)  # 0-based to 1-based

Hızlı Kontrol

Döngü kurarken 1 tabanlı konumlar istiyorsunuz. Ne yazarsınız?

Özet: Konumları İzleyin

Artık tek bir dizini, en büyük dizini ve tüm dizinleri bulabilir; değerleri güvenle konumlara eşleyebilirsiniz. enumerate, güvenilir konum izleyicinizdir. 🎯

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Yalnızca Değeri Değil, İndeksi de Bulma” dersi ücretsiz mi?

Evet — “Yalnızca Değeri Değil, İndeksi de Bulma” 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 Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

“Yalnızca Değeri Değil, İndeksi de Bulma” dersinde ne öğreneceğim?

enumerate ile konumları izleyin. Competitive Programming Academy 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.

Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, 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 4. dersidir.

“Yalnızca Değeri Değil, İndeksi de Bulma” 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 Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Competitive Programming Academy 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. CP için Listeler, İndeksleme ve Dilimleme
  2. Liste Kavramalarıyla Dizileri Hızla Oluşturma
  3. Min, Max, Sum ve Birikimli Toplamlar
  4. Yalnızca Değeri Değil, İndeksi de Bulma
← Competitive Programming Academy Sayfasına Dön