Python Tuple (Demet) Veri Yapısı: Sıfırdan İleri Seviyeye Kapsamlı Rehber
Python'da veri saklamak için kullanılan temel veri yapılarından biri de Tuple (Demet) yapısıdır. İlk bakışta listelere çok benzese de Tuple'ların çok önemli bir farkı vardır:
Tuple oluşturulduktan sonra değiştirilemez (Immutable).
Bu özellik sayesinde Tuple'lar:
- Daha hızlı çalışır
- Daha az bellek tüketir
- Veri bütünlüğünü korur
- Dictionary anahtarı olarak kullanılabilir
- Büyük veri işleme uygulamalarında performans avantajı sağlar
Gerçek hayatta:
- GPS koordinatları
- Veritabanı kayıtları
- API dönüşleri
- Konfigürasyon bilgileri
- RGB renk tanımları
- Matematiksel koordinatlar
gibi değişmemesi gereken veriler çoğunlukla Tuple ile temsil edilir.
Tuple Nedir?
Birden fazla veriyi tek değişken altında saklayan ancak oluşturulduktan sonra değiştirilemeyen veri yapısıdır.
koordinat = (40.9876, 29.1234)
print(koordinat)
Çıktı:
(40.9876, 29.1234)
Liste ve Tuple Arasındaki Fark
Liste:
liste = [1, 2, 3]
Tuple:
tuple_veri = (1, 2, 3)
Liste değiştirilebilir.
liste[0] = 100
Tuple değiştirilemez.
tuple_veri[0] = 100
Hata:
TypeError:
'tuple' object does not support item assignment
Tuple Oluşturma
Temel Kullanım
personel = (
1001,
"Ali",
"Yazılım Uzmanı"
)
print(personel)
Farklı Veri Tipleri
veri = (
"Python",
3.14,
42,
True
)
print(veri)
Boş Tuple
bos = ()
Tek Elemanlı Tuple
En sık yapılan hata budur.
Yanlış:
x = (5)
print(type(x))
Çıktı:
<class 'int'>
Doğru:
x = (5,)
print(type(x))
Çıktı:
<class 'tuple'>
Tuple Elemanlarına Erişim
meyveler = (
"Elma",
"Armut",
"Muz"
)
print(meyveler[0])
print(meyveler[1])
Çıktı:
Elma
Armut
Negatif İndeksler
meyveler = (
"Elma",
"Armut",
"Muz"
)
print(meyveler[-1])
Çıktı:
Muz
Tuple Uzunluğu
veriler = (
10,
20,
30,
40
)
print(len(veriler))
Çıktı:
4
Tuple Üzerinde Döngü
renkler = (
"Kırmızı",
"Mavi",
"Yeşil"
)
for renk in renkler:
print(renk)
Tuple Dilimleme (Slicing)
sayilar = (
10,
20,
30,
40,
50
)
print(sayilar[1:4])
Çıktı:
(20, 30, 40)
Tuple Birleştirme
a = (1, 2, 3)
b = (4, 5, 6)
c = a + b
print(c)
Çıktı:
(1, 2, 3, 4, 5, 6)
Tuple Çoğaltma
sayilar = (1, 2, 3)
print(sayilar * 3)
Çıktı:
(1, 2, 3, 1, 2, 3, 1, 2, 3)
Tuple İçinde Arama
in Operatörü
renkler = (
"Kırmızı",
"Mavi",
"Yeşil"
)
print("Mavi" in renkler)
Çıktı:
True
index()
renkler = (
"Kırmızı",
"Mavi",
"Yeşil"
)
print(
renkler.index("Mavi")
)
Çıktı:
1
count()
sayilar = (
1,
2,
2,
3,
2
)
print(
sayilar.count(2)
)
Çıktı:
3
Tuple Packing
Python'ın en güçlü özelliklerinden biridir.
personel = (
1001,
"Ali",
75000
)
Aslında Python bunu şöyle yorumlar:
personel = 1001, "Ali", 75000
Tuple Unpacking
id,
isim,
maas = personel
print(id)
print(isim)
print(maas)
Çıktı:
1001
Ali
75000
Hands-On 1: Koordinat Sistemi
istanbul = (
41.0082,
28.9784
)
print(
"Enlem:",
istanbul[0]
)
print(
"Boylam:",
istanbul[1]
)
Hands-On 2: RGB Renk Sistemi
mavi = (
0,
0,
255
)
print(
f"R:{mavi[0]}"
)
print(
f"G:{mavi[1]}"
)
print(
f"B:{mavi[2]}"
)
Hands-On 3: Veritabanı Kaydı
kayit = (
1001,
"Ali",
"Yazılım Uzmanı",
85000
)
id,
isim,
gorev,
maas = kayit
print(
f"{isim} - {maas}"
)
Hands-On 4: Çoklu Değer Döndürme
Fonksiyonlardan çok sık kullanılır.
def hesapla(a, b):
toplam = a + b
fark = a - b
return (
toplam,
fark
)
sonuc = hesapla(20, 10)
print(sonuc)
Çıktı:
(30, 10)
Hands-On 5: Sonucu Parçalamak
toplam,
fark = hesapla(20, 10)
print(toplam)
print(fark)
Swap (Yer Değiştirme)
Python'ın ünlü özelliği.
C#'ta:
int temp = a;
a = b;
b = temp;
Python'da:
a = 10
b = 20
a, b = b, a
print(a, b)
Çıktı:
20 10
İç İçe Tuple
matris = (
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
)
print(
matris[1][2]
)
Çıktı:
6
Liste İçinde Tuple
Çok yaygındır.
personeller = [
(1, "Ali"),
(2, "Ayşe"),
(3, "Mehmet")
]
for id, isim in personeller:
print(id, isim)
Tuple İçinde Liste
Dikkat edilmesi gereken önemli bir konu.
veri = (
1,
2,
[3, 4]
)
veri[2].append(5)
print(veri)
Çıktı:
(1, 2, [3, 4, 5])
Tuple değişmezdir ancak içindeki mutable nesneler değişebilir.
NamedTuple
Daha okunabilir tuple yapıları oluşturur.
from collections import namedtuple
Personel = namedtuple(
"Personel",
[
"id",
"isim",
"maas"
]
)
p = Personel(
1,
"Ali",
75000
)
print(p.isim)
Çıktı:
Ali
Hands-On 6: NamedTuple ile Personel Sistemi
from collections import namedtuple
Personel = namedtuple(
"Personel",
[
"id",
"isim",
"departman"
]
)
personeller = [
Personel(
1,
"Ali",
"Yazılım"
),
Personel(
2,
"Ayşe",
"Muhasebe"
)
]
for p in personeller:
print(
p.isim,
p.departman
)
Tuple ve Set İlişkisi
Tuple hashlenebilir olduğu için Set içinde kullanılabilir.
koordinatlar = {
(40.1, 29.1),
(40.2, 29.2),
(40.3, 29.3)
}
print(koordinatlar)
Tuple Dictionary Anahtarı Olarak Kullanmak
sicaklik = {
("İzmir", "Ocak"): 12,
("İzmir", "Şubat"): 13,
("İzmir", "Mart"): 17
}
print(
sicaklik[
("İzmir", "Mart")
]
)
Çıktı:
17
Performans Karşılaştırması
Bellek Kullanımı
import sys
liste = [1, 2, 3, 4, 5]
tuple_veri = (1, 2, 3, 4, 5)
print(
sys.getsizeof(liste)
)
print(
sys.getsizeof(tuple_veri)
)
Tuple daha az bellek kullanır.
Büyük Veri Performansı
import timeit
liste = [x for x in range(1000)]
tuple_veri = tuple(range(1000))
print(
timeit.timeit(
lambda: liste[500],
number=1000000
)
)
print(
timeit.timeit(
lambda: tuple_veri[500],
number=1000000
)
)
Tuple genellikle biraz daha hızlıdır.
Gerçek Hayat Kullanım Senaryoları
Tuple kullanın:
- GPS koordinatları
- RGB renkleri
- Tarih bilgileri
- Sabit konfigürasyonlar
- Fonksiyon dönüşleri
- Veritabanı kayıtları
- Cache anahtarları
Liste kullanın:
- Veri değişecekse
- Eleman eklenecekse
- Silme işlemleri yapılacaksa
Python ve C# Karşılaştırması
Python
personel = (
1,
"Ali",
75000
)
C
var personel =
(
1,
"Ali",
75000m
);
Console.WriteLine(
personel.Item2
);
İleri Seviye Hands-On: Satış Analizi
satislar = [
("Laptop", 45000),
("Mouse", 500),
("Laptop", 45000),
("Monitör", 12000),
("Mouse", 500)
]
toplam = {}
for urun, fiyat in satislar:
toplam[urun] = (
toplam.get(
urun,
0
)
+ fiyat
)
print(toplam)
Çıktı:
{
'Laptop':90000,
'Mouse':1000,
'Monitör':12000
}
Özet
Tuple, Python'ın en önemli veri yapılarından biridir ve özellikle değişmemesi gereken verileri saklamak için tasarlanmıştır.
İyi bir Python geliştiricisi;
- Tuple oluşturmayı
- Packing ve Unpacking işlemlerini
- Çoklu dönüş değerlerini
- NamedTuple kullanımını
- Tuple ile performans avantajlarını
- Dictionary anahtarı olarak kullanımını
- Veri modelleme tekniklerini
çok iyi seviyede bilmelidir.
Özellikle veri analizi, yapay zeka, API geliştirme, büyük veri sistemleri ve yüksek performanslı uygulamalarda Tuple kullanımı kodun hem daha güvenilir hem de daha verimli çalışmasını sağlar. Python ekosistemindeki birçok kütüphane, veri aktarımı ve fonksiyon dönüşlerinde Tuple yapısını yoğun olarak kullanmaktadır.
Top comments (0)