Python Koleksiyonları Modülü: Gelişmiş Konteyner Türleri

Python'un koleksiyon modülünü kullanmayı öğrenin. Master Counter, defaultdict, Namedtuple, deque ve karmaşık veri yapılarının nasıl basitleştirileceği.

Editör'de deneyin

Genel Bakış

Python'un temel kapsayıcıları (listeler, sözlükler, kümeler ve tuple'lar) çoğu görev için yeterli olsa da, karmaşık programlar genellikle özel veri yapıları gerektirir. Bu sorunu çözmek için Python yerleşik 'koleksiyonlar' modülünü sağlar. Bu modül, ortak programlama görevlerini daha verimli bir şekilde ve daha temiz, daha kendi kendini belgeleyen sözdizimi ile çözmek için tasarlanmış yüksek performanslı konteyner veri türlerini içerir.

En kullanışlı sınıflar arasında, normal bir sözlük gibi davranan ancak eksik anahtarları otomatik olarak varsayılan bir değerle (boş bir liste veya tam sayı sıfır gibi) başlatan ve ayrıntılı anahtar kontrollerine olan ihtiyacı ortadan kaldıran 'defaultdict' vardır. Bir başka güç merkezi ise yinelenebilir bir öğedeki oluşumların çetelesini yapmak için özel olarak optimize edilmiş 'Counter' sınıfıdır. Hızlı kuyruklar ve yığınlar için, 'deque' (çift uçlu kuyruk), 'O(N)' kaymalarından muzdarip olan listelerin aksine, her iki uçta da 'O(1)' ekleme ve silme olanağı sunar.

Son olarak modül, geleneksel indekslerin yanı sıra nokta gösterimi (örneğin, 'nokta[0]' yerine 'nokta.x') kullanılarak erişilebilen hafif, demet benzeri nesneler oluşturan 'namedtuple'ı sunar. Bu size bir sınıfın okunabilirliğiyle birlikte bir Tuple'ın hızını ve değişmezliğini verir. Koleksiyon modülünü iş akışınıza dahil etmek kodunuzun zarif, performanslı ve temiz kalmasını garanti eder.

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

Counter'ı kullanarak kelimeleri saymak ve defaultdict ile sözlük gruplarını düzenlemek.

collections_demo.py
Editör'de deneyin
from collections import Counter, defaultdict, namedtuple

# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")

# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")

# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")
Terminal Çıkışı
Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20

Adım Adım Uygulama

  • Counter aracılığıyla hata oluşumlarını saymak için günlük dosyalarını analiz etme
  • Deque kullanarak öncelik sıraları veya görev zamanlayıcıları oluşturma
  • Namedtuple kullanarak koordinat boyutlarını veya veri kayıtlarını temsil etme

Sıkça Sorulan Sorular

Kuyruk işlemleri için deque neden listeden daha hızlıdır?

Bir liste, önden eklerken veya silerken bellekteki sonraki tüm öğelerin kaydırılmasını gerektirir (O(N)). Bir deque, çift bağlantılı bir liste olarak uygulanır ve her iki uçta da O(1) işlemlerine izin verir.

Adlandırılmış bir grubun öğelerini değiştirebilir miyim?

Hayır. Adlandırılmış kayıtlar standart kayıtlardan miras aldıkları için tamamen değişmezler. Değiştirilmiş yeni bir örneği döndürmek için ._replace() yöntemini kullanmanız gerekir.

İlgili Konular

Önerilen Python Kaynakları

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