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:
Tek elemanlı bir tuple için sonda virgül gerekir; yoksa Python parantezleri gruplama olarak yorumlar:
Boş tuple için () kullan:
Pratikte Değişmezlik
Bir tuple'ı değiştirmeyi dene, Python seni durdurur:
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.
- Güvenlik. Bir fonksiyona geçirdiğin tuple, arkandan değiştirilemez.
- Hashlenebilirlik. Değişmez değerlerden oluşan tuple'lar sözlük anahtarı ya da set üyesi olarak kullanılabilir; listeler olamaz.
- 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:
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:
"Geri kalanını" toplamak için * kullanabilirsin:
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:
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:
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:
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.