Resim

Python Demetler(Tuple)

Python Tuple'ları (Demetler): Değiştirilemez (Immutable) Koleksiyonlar

Listeye Benzer Ama Daha Güvenli

Merhaba! Python'da veri gruplarını depolamanın en popüler yollarından biri de Tuple'lar (Demetler)'dir. Tıpkı listeler gibi, tuple'lar da sıralı bir koleksiyonda farklı türden öğeleri saklayabilir. Ancak tuple'ların en belirgin ve önemli özelliği değiştirilemez (immutable) olmalarıdır.

Bu özellik, tuple'ları verilerin sabit kalması gereken durumlar için ideal bir seçim haline getirir (örneğin, bir rengin RGB kodu, bir veritabanı kaydının koordinatları veya bir ay ismi listesi).

Bu yazıda, tuple'ların nasıl tanımlandığını, listelerden farklarını ve yaygın kullanım senaryolarını öğreneceğiz.


1. Tuple Tanımlama ve Özellikleri

Tuple'lar, öğelerin parantezler (()) içine virgülle ayrılarak yazılmasıyla oluşturulur. Ancak parantezler teknik olarak isteğe bağlıdır, asıl önemli olan öğeleri ayıran virgüldür.

a. Temel Özellikler

  1. Sıralı (Ordered): Öğeler eklendikleri sırayı korur.

  2. Değiştirilemez (Immutable): Oluşturulduktan sonra tuple'ın içine yeni öğe eklenemez, var olan öğe silinemez veya değiştirilemez.

  3. Farklı Tipler: Tıpkı listeler gibi, farklı veri türlerini bir arada saklayabilir.

  • Örnek Tanımlama:

    renk_rgb = (255, 0, 0)   # Parantezli tanımlama
    koordinat = 10, 20       # Parantezsiz tanımlama
    tek_elemanli = ("Elma",) # Tek elemanlı tuple için 
    #virgül zorunludur!
    
    print(type(koordinat))
    # Çıktı: <class 'tuple'>
    
Kendiniz deneyebilirsiniz:



Önemli Not: Tek bir öğeye sahip bir tuple tanımlarken, öğeden sonra virgül (,) koymak zorunludur. Aksi takdirde, Python onu bir tuple değil, sadece bir string veya int olarak algılar.

 2. Tuple Öğelerine Erişim (Indexing ve Slicing)

Tuple'lar sıralı olduğu için, öğelere erişim tıpkı listelerdeki gibidir: Indexing (Dizinleme) ve Slicing (Dilimleme) kullanılarak yapılır.

  • Indexing: koordinat[0] (İlk öğe: 10)

  • Slicing: hafta[1:4] (İkinci öğeden dördüncü öğeye kadar)


hafta = ("Pzt", "Salı", "Çarş", "Perş", "Cuma")
print(hafta[1])    # Çıktı: Salı
print(hafta[-1])   # Çıktı: Cuma

Kendiniz deneyebilirsiniz:


3. Neden Tuple Kullanılır? (Liste vs. Tuple)

ÖzellikListe (List)Tuple (Demet)
Söz DizimiKöşeli Parantezler []Parantezler ()
DeğiştirilebilirlikMutable (Değiştirilebilir)Immutable (Değiştirilemez)
Kullanım AlanıDeğişken veri koleksiyonları, sık sık ekleme/silme gereken durumlar.Sabit veri grupları, fonksiyonlardan birden fazla değer döndürme, sözlük anahtarları.
  • Güvenlik/Sabitlik: Bir tuple'ı bir fonksiyona argüman olarak gönderdiğinizde, fonksiyonda yapılan işlemlerin orijinal tuple'ı değiştirmeyeceğinden emin olursunuz.

  • Performans: Değiştirilemez oldukları için listelere göre biraz daha hızlı işlem görebilirler.

  • Fonksiyondan Değer Döndürme: Python fonksiyonları genellikle birden fazla değeri bir tuple içinde döndürür.

# Hata: Tuple değiştirilemez olduğu için atama yapılamaz
kordinat_noktasi = (5, 12)
# kordinat_noktasi[0] = 7  # TypeError: 'tuple' object does not 
#support item assignment

4. Tuple Üzerinde Kullanılabilecek Metotlar

Tuple'lar değiştirilemez olduğu için append(), remove() veya sort() gibi değiştirici metotları yoktur. Ancak sorgulama metotları kullanılabilir:

  • count(değer): Belirtilen değerin tuple içinde kaç kez geçtiğini sayar.

    t = (1, 2, 2, 3)
    # t.count(2)  ->  2
    
  • index(değer): Belirtilen değerin ilk bulunduğu index numarasını döndürür.

    t = ("a", "b", "c")
    # t.index("b")  ->  1
    
  • len(tuple): Tuple'daki toplam öğe sayısını döndürür (yerleşik fonksiyon, metot değil).

5. Tuple'dan Listeye ve Tersine Dönüşüm

Tuple'lar sabitlik gerektirdiğinde harikadır, ancak üzerlerinde değişiklik yapmanız gerektiğinde, geçici olarak listeye dönüştürülebilirler.

sabit_degerler = (10, 20, 30)

# 1. Tuple'ı Listeye Çevir
gecici_liste = list(sabit_degerler)
gecici_liste.append(40) # Değişiklik yapıldı

# 2. Listeyi tekrar Tuple'a Çevir
yeni_sabit_degerler = tuple(gecici_liste)

print(yeni_sabit_degerler)
# Çıktı: (10, 20, 30, 40)

Kendiniz deneyebilirsiniz:


6. Tuple Güncellemesi: Değişmezliği Aşmanın Dolaylı Yolu

Tuple'ların en temel kuralı, içeriklerinin değiştirilemez olmasıdır. Bir kez tanımlandığında,

öğe ekleyemez, silemez veya var olan bir öğeyi yerinde değiştiremezsiniz.

Ancak, bir tuple'daki veriyi "güncellemeniz" gerektiğinde uygulayabileceğiniz standart bir

teknik vardır. Bu teknik, orijinal tuple'ı değiştirmek yerine, yeni bir tuple oluşturmayı içerir.

Yöntem: Listeye Çevir, Değiştir, Tuple'a Çevir

Bir tuple'ı dolaylı olarak güncellemenin en yaygın yolu, onu geçici olarak değiştirilebilir bir türe

(liste) dönüştürmek, değişiklikleri yapmak ve ardından sonucu tekrar tuple'a dönüştürmektir.

Adım Adım Örnek:

Tuple, bir kullanıcının sabit doğum tarihini (yıl, ay, gün) tutuyor olsun. Yıl bilgisini 1990'dan

1991'e güncellemek istiyoruz.

1. Tuple Tanımlama (Orijinal Sabit Veri)

dogum_tarihi_tuple = (1990, 5, 15)

2. Listeye Dönüştürme (Değiştirilebilirlik Kazanma) list() yerleşik fonksiyonu ile tuple'ı listeye çeviriyoruz.

gecici_liste = list(dogum_tarihi_tuple) print(f"Liste Hali: {gecici_liste}") # Çıktı: Liste Hali: [1990, 5, 15]

3. Güncelleme İşlemini Yapma (Liste Üzerinde) Listenin 0. index'indeki (Yıl) değeri güncelliyoruz.

gecici_liste[0] = 1991 # Yıl bilgisini değiştirme print(f"Güncel Liste: {gecici_liste}") # Çıktı: Güncel Liste: [1991, 5, 15]

4. Tekrar Tuple'a Dönüştürme (Sabitliği Geri Kazanma) tuple() yerleşik fonksiyonu ile güncellenmiş listeyi tekrar tuple'a çeviriyoruz ve bu yeni tuple'ı

orijinal değişkene atıyoruz.

dogum_tarihi_tuple = tuple(gecici_liste) print(f"Yeni Tuple: {dogum_tarihi_tuple}") # Çıktı: Yeni Tuple: (1991, 5, 15)

Bu süreç, orijinal tuple'ın değişmezlik kuralını teknik olarak ihlal etmez. Biz sadece veriyi

değiştirilebilir bir forma aktardık, üzerinde işlem yaptık ve yeni bir tuple oluşturup aynı isimli

değişkene atayarak sanki güncelleme yapmış gibi göründük.

Kendiniz deneyebilirsiniz:


Tuple'larla Veri Bütünlüğü

Tuple'lar, özellikle verinin değişmemesi gereken yerlerde (sabit konfigürasyonlar veya koordinat setleri) listenin sağladığı esnekliği, ek bir güvenlik katmanıyla sunar. Listeler kadar sık kullanılmasalar da, Python'da veri bütünlüğünü korumak için vazgeçilmezdirler.

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?