Python’da Demetler (Tuple)

Python’da “tuple” (demetler); “list” (liste), “set” (küme) ve “dictionary” (sözlük) ile beraber platformda gömülü halde bulunan ve veri koleksiyonlarını depolamak için kullanılan dört veri tipinden biridir. Biz bu yazımızda ise Python’daki demetlerin ne tür özellikleri olduğunu, nasıl oluşturulup kullanıldığını adım adım inceleyeceğiz.

“Tuple” İsmi Nereden Geliyor?

“Tuple” terimi, matematikten gelmektedir. Matematikte bir sıralı koleksiyon ya da dizi için kullanılan bir terimdir. Özellikle, “n-tuple” kavramı, “n” sayıda elemandan oluşan bir sıralı koleksiyonu ifade eder. Şu şekilde örneklendirebiliriz:

  • 2-tuple: İki elemanlı bir koleksiyon (aynı zamanda bir çift olarak bilinir).
  • 3-tuple: Üç elemanlı bir koleksiyon (üçlü olarak bilinir).

İşte bu matematiksel yapının programlama dünyasındaki karşılığı Python’da yine “tuple” adıyla kullanılmaktadır.

Python’da “Tuple” Bildirimi

Python’da tuple veri tipi, her ne kadar listelere benze de birkaç önemli farkla onlardan ayrılırlar. Tıpkı listeler gibi yinelenen değerlere sahip olup indeks numaraları ile onlara ulaşılabilse de, listelerden farklı olarak değiştirilemez’dir (immutable). Haliyle “tuple” kullanılarak oluşturulmuş bir koleksiyona “ekleme”, “silme” ve “güncelleme” yapılamaz.

Tuple’lar, parantezler () ile tanımlanır. Örneğin, farklı sebze isimlerini “tuple” içinde saklamak istediğimizi düşünelim. Bunu aşağıdaki gibi yazabiliriz:

sebzeler = ("patlıcan", "brokoli", "havuç", "ıspanak")

Yukarıdaki örnekte, sebzeler adında bir tuple oluşturduk ve içerisine dört farklı sebze ismi ekledik. Bu sebzelere, yani “tuple” elemanlarına indeks numaralarıyla erişebiliriz. Listelere benzer şekilde indeks numarası 0’dan başlar. Örneğimiz üzerinden gösterecek olursak; sebzeler[1] bize “brokoli” sonucunu döndürecektir. Bu durumu şu şekilde de düşünebiliriz: (“patlıcan”0, “brokoli”1, “havuç”2, “ıspanak3“)

“Tuple” koleksiyonu, tıpkı listeler gibi içerisinde herhangi bir veri türünden elemanlar barındırabilir. Öyle ki; sayı, string, bir liste ve hatta başka bir tuple bile bu koleksiyonun içinde yer alabilir. Örneğin:

ornek_tuple = (5, "Merhaba", [1, 2, 3], (a, b, c))

O halde, tek bir cümle kurarak Python’da tuple’ların ne olduğunu şu şekilde özetleyebiliriz: “Tuple” koleksiyonları; normal parantezler içerisinde (), birbirlerinden virgülle ayrılmış elemanlardan oluşan, sıralı, değiştirilemez ve herhangi bir veri tipinde eleman barındırabilen veri koleksiyonlarıdır.

“Peki, liste varken ben niye ‘tupple’ kullanayım ki?” diye sorabilirsiniz. Bu soruya şu şekilde yanıt verebiliriz:

  1. Veri Güvenliği: Eğer bir veri setinin değişmemesini garanti etmek istiyorsanız, “tuple” kullanabilirsiniz.
  2. Performans: “Tuple”lar, değiştirilemez olduğu için listelere göre daha hızlıdır. Haliyle çok büyük veri kümeleriyle çalışırken “tuple” kullanmak, programın performansını arttıracaktır.
  3. Kullanım Alanı: “Tuple”lar özellikle sabit verilerin, örneğin coğrafi koordinatların ya da bir tarihin (gün, ay, yıl) temsil edilmesi gibi durumlarda tercih edilir.

Özetle, “tuple”, bir kez oluşturulduğunda sabit kalması gereken veri kümelerini saklamak için harika bir seçimdir. Merak etmeyin! “Belli başlı senaryolar ışığında koleksiyonumuzda ekleme, silme, indeks değiştirme gibi işlemler yapmamız gerekebilir.” şeklinde endişeniz varsa da bu çözümsüz değil.

İşte böyle durumlar için “tuple” koleksiyonumuzu list() metodu kullanılarak önce liste tipine dönüştürebiliriz. Bu sayede koleksiyon üzerinde gerekli değişiklikleri liste üzerinden yapabilir ve tuple() metodunu kullanarak tekrardan koleksiyonumuzu “tuple”a dönüştürebiliriz. Bakınız:

sebzeler = ("brokoli", "lahana", "karnabahar")
print(sebzeler)  # Çıktı: ('brokoli', 'lahana', 'karnabahar')
# Tuple'ı listeye dönüştürme
sebzeler_listesi = list(sebzeler)
# Liste üzerinde değişiklik yapma
sebzeler_listesi[1] = "marul"
# Listeyi tekrar tuple'a dönüştürme
sebzeler = tuple(sebzeler_listesi)
print(sebzeler)  # Çıktı: ('brokoli', 'marul', 'karnabahar')

Yukarıdaki örneğimizde, “lahana” kelimesini “marul” ile değiştirdik. Ancak doğrudan “tuple” üzerinde bu değişikliği yapamadığımız için “tuple”ı önce bir listeye dönüştürüp gerekli değişikliği yaptıktan sonra tekrar “tuple”a çevirdik.

Python’da “Tuple” ile “Liste” Arasındaki Farklar

Python’da list ve tuple arasındaki farkları aşağıdaki tablodaki gibi özetleyebiliriz:

ÖzellikListTuple
Sözdizimi[]()
DeğiştirilebilmeEvetHayır
Eleman Ekleme/ÇıkarmaEvetHayır
PerformansYavaşHızlı
İçerikDeğiştirilebilirSabit
Metot sayısıFazlaAz
Python: Tuple ile Liste Arasındaki Farklar

Yukarıdaki tablo, demet ve liste arasındaki temel farkları kapsamlı bir şekilde özetlemektedir. Her iki veri tipi de kendi kullanım alanlarına ve avantajlarına sahiptir. Hangi yapının kullanılacağına karar verirken bu farkları göz önünde bulundurmanızı tavsiye ederim.

Python’da “For” Döngüsü ile “Tuple” Kullanımı

Tıpkı listelerde olduğu gibi, “tuple”ların üzerinde de for döngüsü ile gezinilebilir. Her iterasyonda “tuple”ın bir elemanına erişebiliriz. Örneğin:

sebzeler = ("brokoli", "havuç", "fasulye")
for sebze in sebzeler:
    print(sebze)
"""
Çıktı:
brokoli
havuç
fasulye
"""

Ayrıca, enumerate() metodunu kullanarak tıpkı listede olduğu gibi “tuple”ın elemanlarına ve onların indekslerine erişebiliriz:

sebzeler = ("brokoli", "havuç", "fasulye")
for indeks, sebze in enumerate(sebzeler):
    print(f"Index {indeks}: {sebze}")
"""
Çıktı:
Index 0: brokoli
Index 1: havuç
Index 2: fasulye
"""

Python’da “Tuple”ları Birleştirmek

1. Python’da + operatörü, “tuple”ları birleştirerek yeni bir “tuple” oluşturur. Tabi bu işlem, orijinal “tuple”ları değiştirmez; bunun yerine yeni bir “tuple” döndürür. Örneğin:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
birlesik_tuple = tuple1 + tuple2
print(birlesik_tuple) # Çıktı: (1, 2, 3, 4, 5, 6)

2. tuple() metodu ile listenin ya da “tuple” ın içeriğini tek bir “tuple” içerisinde birleştirebiliriz. Örneğin:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

# İki tuple'ı bir listeye koyuyoruz
combined = tuple1 + tuple2

# Tek bir tuple haline getiriyoruz
result_tuple = tuple(combined)

print(result_tuple)  # Çıktı: (1, 2, 3, 4, 5, 6)

Bu yöntemle “tuple”lar önce listelere dönüştürülür, sonra listeleri birleştirir ve son olarak birleştirilen listeyi tekrar “tuple”a dönüştürür.

3. Python 3.5 ve sonrasında, * operatörüyle birden fazla tuple‘ı veya listenin içeriğini birleştirerek yeni bir tuple oluşturabilirsiniz. Bu özellik jargonda “iterable unpacking” olarak adlandırılır ve hem “tuple” hem de “list“ler için geçerlidir. Nasıl yapıldığını aşağıdaki örnekte inceleyebilirsiniz:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

# * operatörünü kullanarak tuple'ları birleştirme
combined_tuple = (*tuple1, *tuple2)

print(combined_tuple)  # Çıktı: (1, 2, 3, 4, 5, 6)

Python “Tuple” Metotları

  • count(): “Tuple” içinde belirtilen bir elemanın kaç kere geçtiğini döndürür.
  • index(): İlgili elemanın “tuple” içindeki ilk indeksini döndürür. Eğer eleman “tuple” içinde bulunmazsa, ValueError hatası verir.
rakamlar = (1, 2, 3, 4, 5, 1, 2, 3)
sayi = rakamlar.count(1)
print(sayi)  # çıktı: 2
meyveler = ("elma", "muz", "kiraz", "portakal", "karpuz")
indeks = meyveler.index("kiraz")
print(indeks)  # çıktı: 2

Bu iki metot, “tuple”ların üzerinde doğrudan çalıştırabileceğiniz tek “built-in” metodlardır. “Tuple”ların değiştirilemez (immutable) olması sebebiyle, listelerde bulunan append(), insert(), remove() gibi metotlar “tuple”da yoktur.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu