# Python Veri Türleri: Kapsamlı Bir Rehber
Veri bilimi projelerinizde, makine öğrenmesi modellerinizde veya otomasyon scriptlerinizde doğru veri türünü seçmek, kodunuzun verimliliği ve doğruluğu için hayati önem taşır. Yanlış veri türü seçimi, beklenmedik hatalara, yavaş çalışmaya ve hatta programınızın çökmesine neden olabilir. Bu kapsamlı rehberde, Python’daki farklı veri türlerini, bunların kullanım alanlarını ve performans optimizasyonunu detaylı olarak ele alacağız. Python’da veri türlerini anlamak, kodlama becerilerinizi bir üst seviyeye taşımanın anahtarıdır. Fatih Soysal’ın diğer Python makalelerine [buradan](https://fatihsoysal.com) ulaşabilirsiniz.
Python’da Temel Veri Türleri Nelerdir?
Python, dinamik olarak yazılan bir dil olduğu için, değişkenlerin veri türlerini açıkça belirtmenize gerek yoktur. Yine de, Python’ın sunduğu temel veri türlerini anlamak, kodunuzun daha okunabilir ve hata ayıklaması daha kolay hale getirir. İşte temel Python veri türleri:
1. Numerik Türler:
* int (Tam Sayılar): Tam sayıları (örneğin, -2, 0, 100) temsil eder. Bellekte sınırlı bir alan kaplarlar, ancak çok büyük sayılar için long türü kullanılır.
* float (Ondalıklı Sayılar): Ondalıklı sayıları (örneğin, -2.5, 0.0, 3.14) temsil eder. float türü, kayan nokta gösterimini kullanır ve bu nedenle hassasiyet sınırlamaları olabilir.
* complex (Karmaşık Sayılar): Karmaşık sayıları (örneğin, 2+3j) temsil eder. j veya J, sanal birimi gösterir.
Örnek:
tam_sayi = 10
ondalikli_sayi = 3.14
karmasik_sayi = 2 + 3j
print(type(tam_sayi), type(ondalikli_sayi), type(karmasik_sayi))
Yeni Başlayan: Yukarıdaki kodu çalıştırın ve her değişkenin veri türünün çıktısını gözlemleyin.
Orta: Büyük sayılarla çalışırken int ve float türlerinin performansını karşılaştırın. timeit modülünü kullanarak zaman ölçümü yapabilirsiniz.
İleri Düzey: decimal modülünü kullanarak yüksek hassasiyetli ondalık hesaplamalar yapın ve performansını float ile karşılaştırın. Farklı işlemler için hangi türün daha uygun olduğunu belirleyin.
2. Boolean Türü:
* bool (Boolean): True (Doğru) veya False (Yanlış) değerlerini alır. Mantıksal işlemlerde kullanılır.
Örnek:
dogru_mu = True
yanlis_mi = False
print(dogru_mu and yanlis_mi) # False
print(dogru_mu or yanlis_mi) # True
Yeni Başlayan: and, or, not gibi mantıksal operatörleri kullanarak farklı boolean kombinasyonlarını deneyin.
Orta: Bir web uygulamasında kullanıcı girişini doğrulamak için boolean değerlerini nasıl kullanacağınızı gösteren bir örnek geliştirin.
İleri Düzey: Performans açısından bool türünün diğer veri türleriyle karşılaştırılmasını yapın. Boolean işlemlerinin optimizasyonu için bazı teknikler araştırın.
3. String Türü:
* str (String): Metinleri temsil eder. Tek tırnak (') veya çift tırnak (") içine alınır.
Örnek:
isim = "Fatih Soysal"
mesaj = 'Merhaba dünya!'
print(isim + ", " + mesaj) # String birleştirme
Yeni Başlayan: String manipülasyonu için temel fonksiyonları (örneğin, len(), upper(), lower(), replace()) öğrenin.
Orta: Bir metin dosyasını okuyup, içindeki kelimeleri sayan bir program yazın. Büyük metin dosyaları için performans optimizasyonu nasıl yapılır?
İleri Düzey: Regular expression’lar (regex) kullanarak metin içindeki desenleri arayın ve çıkarın. Performans analizi için re modülünün farklı fonksiyonlarını karşılaştırın.
Python’da Karmaşık Veri Türleri: Nasıl Kullanılır?
Python’ın gücü, temel veri türlerinin ötesinde, karmaşık veri yapıları sunmasından gelir. Bu yapılar, büyük miktarda veriyi organize etmenizi ve yönetmenizi kolaylaştırır.
1. Listeler (list):
Sıralı, değiştirilebilir (mutable) ve aynı türde veya farklı türde elemanlar içerebilen bir koleksiyon.
Örnek:
liste = [1, 2, "üç", 4.0]
liste.append(5) # Eleman ekleme
print(liste[0]) # İlk elemana erişim
Yeni Başlayan: Liste elemanlarına erişim, eleman ekleme ve silme işlemlerini öğrenin.
Orta: Bir alışveriş listesi uygulaması oluşturun. Kullanıcıların listeye ürün eklemelerini ve silmelerini sağlayın.
İleri Düzey: Listelerin bellekte nasıl depolandığını ve performansını etkileyen faktörleri inceleyin. Liste anlama (list comprehension) kullanarak performansı nasıl optimize edebileceğinizi gösterin.
2. Demetler (tuple):
Listeler gibi sıralı bir koleksiyon oluşturur ancak değiştirilemez (immutable)dir.
Örnek:
demet = (1, 2, "üç", 4.0)
# demet.append(5) # Hata verir çünkü demet değiştirilemez.
Yeni Başlayan: Demetlerin listelerden farkını anlayın ve kullanım alanlarını keşfedin.
Orta: Bir koordinat sisteminde noktaları temsil etmek için demetleri kullanın.
İleri Düzey: Demetlerin bellekte nasıl depolandığını ve performansını listelerle karşılaştırın. Demetlerin değiştirilemez olması nedeniyle performans avantajlarını açıklayın.
3. Kümeler (set):
Sırasız, değiştirilebilir ve benzersiz elemanlar içeren bir koleksiyon.
Örnek:
kume = {1, 2, 2, 3} # 2 sadece bir kere saklanır
print(kume) # {1, 2, 3}
Yeni Başlayan: Kümelerin temel işlemlerini (birleştirme, kesişim, fark) öğrenin.
Orta: İki listedeki ortak elemanları bulmak için kümeleri kullanın.
İleri Düzey: Kümelerin performansını listelerle ve demetlerle karşılaştırın. Kümelerin hangi durumlarda daha verimli olduğunu açıklayın.
4. Sözlükler (dict):
Anahtar-değer çiftleri içeren, değiştirilebilir bir veri yapısı. Anahtarlar benzersiz olmalıdır.
Örnek:
sozluk = {"isim": "Fatih", "soyisim": "Soysal", "yas": 30}
print(sozluk["isim"]) # Fatih
Yeni Başlayan: Sözlüklere eleman ekleme, erişim ve silme işlemlerini öğrenin.
Orta: Bir öğrenci kayıt sistemi oluşturun. Öğrencilerin adlarını, notlarını ve diğer bilgilerini sözlüklerde saklayın.
İleri Düzey: Sözlüklerin performansını listelerle ve kümelerle karşılaştırın. Farklı anahtar türlerinin performansı üzerindeki etkisini analiz edin.
Python Veri Türleri Performans Optimizasyonu
Python’da performansı optimize etmek için veri türlerinin doğru seçimi çok önemlidir. Örneğin, büyük miktarda sayısal veriyle çalışırken, NumPy kütüphanesini kullanarak vektörleşmiş işlemler yapabilirsiniz. Bu, döngülere kıyasla çok daha hızlıdır. Listeler üzerinde işlem yaparken, liste anlama (list comprehension) kullanmak performansı artırabilir. Değiştirilemez veri türleri (demetler, dondurulmuş kümeler) değiştirilebilir veri türlerine göre genellikle daha hızlıdır çünkü bellekte daha verimli bir şekilde saklanırlar. Veri yapılarının boyutunu ve yapısını göz önünde bulundurarak, kodunuzun performansını önemli ölçüde artırabilirsiniz. Büyük veri kümeleri için uygun veri yapılarını seçmek, programınızın ölçeklenebilirliğini ve performansını büyük ölçüde etkiler.
Sıkça Sorulan Sorular
1. Python’da veri türü dönüşümü nasıl yapılır? int(), float(), str() gibi fonksiyonlar kullanılarak veri türleri dönüştürülebilir.
2. Hangi veri türünü ne zaman kullanmalıyım? Veri yapınızın değiştirilebilir olup olmaması, sıralı olup olmaması ve benzersiz elemanlar içerip içermemesi gibi faktörlere bağlı olarak doğru veri türünü seçmelisiniz.
3. Python’da null değer nasıl temsil edilir? None anahtar sözcüğü null değerini temsil eder.
4. Veri türlerini kontrol etmek için nasıl bir yöntem kullanabilirim? type() fonksiyonu ile veri türünü kontrol edebilirsiniz.
5. Python’da veri türü hataları nasıl önlenir? Kodunuzu yazarken veri türlerini dikkatlice seçin ve veri türü dönüşümlerini gerektiği gibi uygulayın. Tip kontrolü yaparak olası hataları yakalayabilirsiniz.
Yazar: Fatih Soysal