Python ile Listede Zaten Olan Sayıları Ayrı Bir Listede Döndürme

Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin beşinci sorusuna geçelim:

  1. Bir dizideki tüm aynı sayıları ayrı bir liste içinde döndüren program yazın
    • Örnek girdi: [1, 2, 2, 3, 4, 4, 4, 2, 5]
    • Örnek çıktı: [2, 4]

Yukarıdaki örneğimizde, bir dizi içerisinde birden fazla geçen sayıları tespit etmek amacıyla bir fonksiyon oluşturduk. İlk adımda, anahtar olarak sayıları ve değer olarak bu sayıların kaç kez geçtiğini saklamak için number_counts adında bir sözlük tanımladık.

Sonrasında, numbers dizisini for döngüsü ile geziyoruz. Bu döngü içerisinde her bir sayıyı (yani num‘u) alıp number_counts sözlüğünde kontrol ediyoruz. Eğer num anahtarı sözlükte varsa, bu anahtarın karşılık geldiği değeri döndürür. Eğer num anahtarı sözlükte yoksa, get metodu ikinci parametre olan 0 değerini döndürür.

Eğer bu sayı zaten sözlükte varsa, bu sayının tekrarı olduğu anlamına gelir. Bu durumda, bu sayının değerini (yani kaç kez karşımıza çıktığını gösteren değeri) bir artırdık.

List comprehension” yöntemini kullanarak, number_counts sözlüğündeki sayıları inceledik. Bu sözlükte, her sayının kaç kez geçtiği bilgisi var. Eğer bir sayı birden fazla kez geçiyorsa, bu sayıyı yeni bir listeye eklemek istiyoruz.

İlk olarak number_counts.items() ile sözlükten anahtar-değer çiftlerini alıyoruz. Daha sonra bu çiftler üzerinde döngü başlatıyoruz. Her dönüşte, num değişkeni anahtarı (yani sayıyı) ve count değişkeni bu anahtarın değerini (yani sayının kaç kez geçtiğini) alıyor.

Eğer count değeri 1’den büyükse (yani bir sayı birden fazla kez geçiyorsa), bu sayıyı (yani num‘u) yeni listeye ekliyoruz. Kodu çalıştırmak için: Trinket

Çözümümüzü anlaşılır olması adına bir de uzun yoldan yapalım:

Kodu çalıştırmak için: Trinket

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu