Menu

Python Tuple'lar: Değişmez Diziler, Unpacking ve Named Tuple'lar

Liste yerine ne zaman tuple'a uzanmalı — değişmezlik, unpacking, named tuple'lar ve tuple'ların doğduğu senaryolar.

Tuple, Değiştiremeyeceğin Bir Listedir

Tuple'lar ve listeler ilk bakışta benzer görünür — ikisi de sıralı dizidir, ikisi de indeksleme ve iterasyonu destekler — ama kritik bir fark her şeyi değiştirir: tuple'lar değişmezdir. Bir tuple oluşturduğunda ona ekleme, ondan çıkarma ya da bir elemanını değiştirme yapamazsın.

Tuple'ları parantezlerle (bazen parantezsiz) yazarsın:

main.py
Output
Click Run to see the output here.

Tek elemanlı bir tuple için sonda virgül gerekir; yoksa Python parantezleri gruplama olarak yorumlar:

main.py
Output
Click Run to see the output here.

Boş tuple için () kullan:

main.py
Output
Click Run to see the output here.

Pratikte Değişmezlik

Bir tuple'ı değiştirmeyi dene, Python seni durdurur:

main.py
Output
Click Run to see the output here.

Bir tuple'tan serbestçe okuyabilirsin — indeksleme, dilimleme, iterasyon, in — sadece onu değiştiremezsin. Farklı bir tuple gerekirse, yeni bir tane oluşturursun.

Neden Değiştiremeyeceğin Bir Şey İstersin?

Değişmezlik bir kısıtlama gibi kulağa gelir ama çoğu zaman tam da istediğin özellik olur.

  1. Güvenlik. Bir fonksiyona geçirdiğin tuple, arkandan değiştirilemez.
  2. Hashlenebilirlik. Değişmez değerlerden oluşan tuple'lar sözlük anahtarı ya da set üyesi olarak kullanılabilir; listeler olamaz.
  3. Niyet. Bir tuple "bu sabit biçimli bir kayıt" der. point = (3, 4), "iki koordinat" anlamını point = [3, 4]'ten daha net iletir.

Tuple'lar şu tür şeylerde parlar:

  • Koordinatlar: (x, y), (lat, lon)
  • RGB renkler: (255, 128, 0)
  • Kayıtlar: (name, email, signup_date)
  • Bir fonksiyondan birden fazla değer döndürme

Unpacking

Tuple'lar ve unpacking söz dizimi birbiri için yaratılmıştır:

main.py
Output
Click Run to see the output here.

Unpacking'i yapan, önündeki virgüldür. Python iki isim ve iki değerli bir tuple görür ve onları ikili olarak bağlar.

Bu deyimsel Python'da her yerdedir:

main.py
Output
Click Run to see the output here.

"Geri kalanını" toplamak için * kullanabilirsin:

main.py
Output
Click Run to see the output here.

Yalnızca ilk ve son elemanları önemsediğinde kullanışlıdır.

Sözlük Anahtarı Olarak Tuple'lar

Tuple'lar (içerikleri hashlenebilir olduğu sürece) hashlenebildiği için, onları dict anahtarı olarak kullanabilirsin. Listeler bunu yapamaz:

main.py
Output
Click Run to see the output here.

Bu kalıp — bir değerler birleşimine göre anahtarlama — şaşırtıcı derecede işe yarar. Şunu düşün: "X kullanıcısının Y gününde aldığı puan" ya da "A'dan B'ye en iyi rota."

Çoklu Dönüş Değerleri İçin Tuple

Birden fazla şey döndürmesi gereken bir fonksiyon genellikle bir tuple döndürür:

main.py
Output
Click Run to see the output here.

Python'un kendi yerleşik divmod() fonksiyonu tam olarak bunu yapar. Çağıran kodun unpacking ataması, bunu doğal bir okunabilirlikle sunar.

Konum Yetmediğinde Named Tuple'lar

Tuple'ların iki ya da üç öğeyi geçtiğinde, hangi konumun ne anlama geldiğini hatırlamak yorucu olur. collections.namedtuple bunu çözer:

main.py
Output
Click Run to see the output here.

Artık tuple'ın elemanlarının isimleri var. Hâlâ değişmez, hâlâ bir tuple (yani unpacking ve indeksleme çalışır), ama erişim kalıbı çok daha dostça. Daha karmaşık bir şey için dataclasses var — onları ileride sınıflar bölümünde göreceğiz.

Tuple vs List: Hızlı Karar Rehberi

  • Sabit biçim, her konumun bir anlamı var → tuple.
  • Büyüyebilecek ya da küçülebilecek bir koleksiyon → list.
  • Bir fonksiyondan birden fazla değer döndürmek → tuple.
  • Dict anahtarı ya da set üyesi gerek → tuple (list çalışmaz).
  • Değiştireceksin → list (tuple izin vermez).

Devam

Tuple'lar bir uçtaki dünyayı kapsar: sabit, küçük, yapılandırılmış. Sırada set'ler var; bambaşka bir işi kapsıyorlar: hızlı üyelik kontrolü ve teklik.

Sıkça Sorulan Sorular

Python'da tuple nedir?

Tuple, sıralı ve değişmez bir dizidir — tıpkı liste gibi, ama oluşturulduktan sonra ekleme, çıkarma ya da elemanlarını değiştirme yapamazsın. Tuple'ları parantezlerle yazarsın: point = (3, 4).

Tuple ile liste arasındaki fark nedir?

İkisi de sıralı dizilerdir. Listeler değiştirilebilir — oluşturduktan sonra değiştirebilirsin — tuple'lar ise değişmezdir. Tuple'lar genellikle birlikte tek bir "kayıt" oluşturan küçük değer koleksiyonları için kullanılır; koordinatlar veya bir fonksiyonun çoklu dönüş değerleri gibi.

Ne zaman tuple kullanmalıyım?

Her konumun bir anlamı olan sabit boyutlu bir kaydın olduğunda tuple kullan — koordinatlar, RGB renkler, bir veritabanı satırı. Ayrıca tuple'ları sözlük anahtarı ya da set üyesi olarak kullan, çünkü listeler orada kullanılamaz. Koleksiyonun büyüyüp küçülebildiği diğer her şey için varsayılan listedir.

Coddy ile kodlamayı öğren

BAŞLA