Python ile Dizide En Çok Tekrar Eden Elemanı Bulma
Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin on birinci sorusuna geçelim:
- 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
- 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
collections
modülündekiCounter
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