Python'da Bir Listedeki Olaylar Nasıl Sayılır

Python listesindeki öğelerin oluşumlarını saymanın en iyi yollarını öğrenin. count() yöntemini, koleksiyon.Sayacı ve sözlük sayımını karşılaştırın.

Bu Çözümü Editör'de deneyin

Genel Bakış

Veri kümelerini analiz etmek çoğu zaman tek tek öğelerin oluşumlarını saymanızı gerektirir. Örneğin, her adayın kaç oy aldığını saymak, metin dosyalarındaki kelime sıklıklarını saymak veya işlem günlüklerinde kopyaları belirlemek. Python, tek bir öğe sayısı mı yoksa tam bir sıklık çetelesi mi aradığınıza bağlı olarak bunu çözmek için çeşitli araçlar sağlar.

Tek bir belirli öğenin sıklığını kontrol etmek için yerleşik liste türü bir ".count(value)" yöntemi sağlar. Liste üzerinde yinelenir ve tam değerin kaç kez göründüğünü sayan bir tamsayı döndürür. Basit ve okunabilir olmasına rağmen, tüm öğelerin sayımlarını almak için bir döngüde `.count()' çağrılması son derece verimsizdir ve O(N^2) karmaşıklığında çalışır.

Tüm öğelerin frekanslarını aynı anda tek geçişte saymak için standart kütüphane, 'koleksiyonlar' modülü içinde 'Sayaç' sınıfını sunar. Bir listenin "Sayaç"a iletilmesi, O(N) zamanındaki tüm öğelerin frekanslarını temsil eden sözlük benzeri bir nesne döndürür. Ayrıca en iyi öğeleri hızlı bir şekilde almak için `most_common()` gibi yardımcı yöntemler de sağlar.

Kod ve Yürütme Çıkışı

Bu kod, listelerdeki tek tek öğelerin sayılmasını ve koleksiyonlar.Counter kullanılarak toplam öğe sayısının alınmasını gösterir.

count_occurrences.py
Editör'de deneyin
from collections import Counter

colors = ["red", "blue", "red", "green", "blue", "red"]

# Method 1: Count a single item using list.count()
red_count = colors.count("red")
print("Occurrences of 'red':", red_count)

# Method 2: Count all items using collections.Counter (Fast and powerful)
color_counts = Counter(colors)
print("\nCounter Object:", color_counts)
print("Count of 'blue':", color_counts["blue"])

# Getting the top most common items
print("Most common color:", color_counts.most_common(1))

# Method 3: Counting manually using a loop and a standard dictionary
manual_counts = {}
for item in colors:
    manual_counts[item] = manual_counts.get(item, 0) + 1
print("\nManual dict count:", manual_counts)
Terminal Çıkışı
Occurrences of 'red': 3

Counter Object: Counter({'red': 3, 'blue': 2, 'green': 1})
Count of 'blue': 2
Most common color: [('red', 3)]

Manual dict count: {'red': 3, 'blue': 2, 'green': 1}

Adım Adım Uygulama

  • Listedeki yalnızca belirli bir öğenin sayısına ihtiyacınız varsa list_variable.count(value) öğesini çağırın.
  • Koleksiyonları içe aktarın. Tüm benzersiz öğeleri tek bir optimize geçişte saymak için listeyi sayın ve iletin.
  • En sık görülen ilk n öğeyi çıkarmak için bir Counter nesnesinde .most_common(n) yöntemini kullanın.

Sıkça Sorulan Sorular

Collections.Counter nesnesinde eksik bir anahtarı ararsam ne olur?

KeyError'ı yükselten standart bir sözlüğün aksine, Counter nesnesi eksik öğeler için sıfır oluşumu temsil eden 0 değerini döndürür.

List.count() ile bir döngüde saymaya kıyasla Counter'ın zaman karmaşıklığı nedir?

Sayaç, listeden bir kez geçerek O(N) doğrusal sürede tüm elemanları sayar. Liste öğeleri üzerinde yineleme yapmak ve list.count() öğesini çağırmak, O(N^2) ikinci dereceden zaman alır; bu, büyük listeler için son derece yavaştır.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.