Python ile Dizide En Çok Tekrar Eden Elemanı Bulma

Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin on birinci sorusuna geçelim:

  1. Bir dizi içerisindeki en çok tekrar eden liste elemanını ve kaç kere tekrar edildiğini bulma
    • Örnek girdi: [5, 3, 4, 8, 5, 3, 1, 5]
    • Örnek çıktı: 5 3
  1. Sözlük kullanarak:
def en_cok_tekrar_eden(dizi):
    tekrarlar = {}
    for eleman in dizi:
        if eleman in tekrarlar:
            tekrarlar[eleman] += 1
        else:
            tekrarlar[eleman] = 1
    
    en_cok_tekrar = max(tekrarlar, key=tekrarlar.get)
    return en_cok_tekrar, tekrarlar[en_cok_tekrar]

giris_dizi = [5, 3, 4, 8, 5, 3, 1, 5]
eleman, tekrar_sayisi = en_cok_tekrar_eden(giris_dizi)
print(eleman, tekrar_sayisi)  # 5 3

Yukarıdaki kodumuzda, bir dizide en çok tekrar eden elemanı ve bu elemanın kaç kere tekrar ettiğini bulmayı amaçlıyoruz. Bu işlemi gerçekleştirmek için bir sözlük yapısı (tekrarlar) kullanıyoruz. Diziyi dolaşırken her eleman için bu elemanın tekrar sayısını bu sözlük içerisinde saklıyoruz.

Kodumuzda, for döngüsü ile diziyi baştan sona dolaşıyoruz. Dizi üzerindeki her bir elemanı incelediğimizde, eğer bu eleman daha önce gördüysek (if koşulu), bu elemanın tekrar sayısını bir artırıyoruz. Eğer elemanı ilk kez görüyorsak, bu elemanı sözlüğe ekleyip tekrar sayısını 1 olarak ayarlıyoruz.

Bu işlemden sonra tekrarlar sözlüğünde, her bir elemanın kaç kere tekrar ettiği bilgisi saklanmış oluyor. Daha sonra max fonksiyonunu kullanarak bu sözlükte en yüksek tekrar sayısına sahip elemanı buluyoruz. Bu eleman, en çok tekrar eden eleman olacaktır. Kodu çalıştırmak için: Trinket

  1. collections modülündeki Counter sınıfı ile hızlı bir şekilde en çok tekrar eden elemanı bulabiliriz:
from collections import Counter

def en_cok_tekrar_eden(dizi):
    tekrar_sayisi = Counter(dizi)
    eleman, sayi = tekrar_sayisi.most_common(1)[0]
    return eleman, sayi

giris_dizi = [5, 3, 4, 8, 5, 3, 1, 5]
eleman, tekrar_sayisi = en_cok_tekrar_eden(giris_dizi)
print(eleman, tekrar_sayisi)  # 5 3

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu