Skip to main content

Python’da Veri Tiplerini Dönüştürme

Giriş

Python’da veri tipleri, bir verinin türünü belirleyerek
ona hangi değerlerin atanabileceğini ve üzerinde hangi işlemlerin yapılabileceğini tanımlar.

Programlama yaparken bazen, verileri farklı şekillerde işleyebilmek için
tip dönüşümü (type conversion) yapmamız gerekebilir.
Örneğin:

  • Sayısal bir değeri metinle birleştirmek (concatenate) isteyebiliriz.
  • Veya başlangıçta tamsayı (integer) olarak tanımlanan bir sayıyı,
    ondalık değerler gösterebilmesi için float türüne çevirmemiz gerekebilir.

Bu rehberde Python’da veri tipleri arasında dönüşüm yapmanın en pratik yollarını öğreneceğiz.

Bu rehberde, sayılar (numbers), metinler (strings), demetler (tuples)
ve listeler (lists) arasında nasıl dönüşüm yapılacağını adım adım öğreneceksin.

Sayı Tiplerini Dönüştürme

Python’da iki temel sayısal veri tipi bulunur:

  • Tamsayılar (integers)
  • Ondalıklı sayılar (floating-point numbers / floats)

Bazen başkasının yazdığı bir kod üzerinde çalışırken bir tamsayıyı (int) ondalıklı sayıya (float) dönüştürmen gerekebilir ya da tam tersi durumda, float yerine int kullanman daha doğru olabilir.

Neyse ki Python, bu dönüşümleri kolayca yapabilmeni sağlayan
yerleşik (built-in) fonksiyonlara sahiptir.

Tamsayıları Float’a Dönüştürme

Python’da float() metodu, tamsayıları (int) ondalıklı sayılara (float) dönüştürmek için kullanılır.
Bu işlemi yapmak için, dönüştürmek istediğin tamsayıyı parantez içine yazman yeterlidir:

float(32)

Bu örnekte, 32 sayısı 32.0 değerine dönüştürülür.

Aynı işlemi bir değişken ile de yapabiliriz.
Örneğin f değişkenine 32 değerini atayıp,
sonra onu float() fonksiyonuyla dönüştürelim:

f = 32
print(float(f))
Output
32.0

float() fonksiyonunu kullanarak, tamsayıları (int) kolayca ondalıklı sayılara (float) dönüştürebiliriz.
Bu, sayısal işlemlerde daha hassas sonuçlar elde etmek istediğimizde oldukça faydalıdır.

Float’ları Tamsayıya Dönüştürme

Python’da, ondalıklı sayıları (float) tamsayıya (int) dönüştürmek için kullanılan yerleşik bir fonksiyon da vardır: int().

Bu fonksiyon, float() fonksiyonuna benzer şekilde çalışır.
Parantez içine dönüştürmek istediğin ondalıklı sayıyı yazarak işlemi gerçekleştirebilirsin:

int(324.9)

Bu örnekte, 324.9 sayısı 324 değerine dönüştürülür.

Aynı işlemi değişkenlerle de yapabiliriz.
Örneğin b değişkenine 764.0, c değişkenine 324.9 değerlerini atayalım
ve ardından bunları int() fonksiyonuyla dönüştürelim:

b = 764.0
c = 324.9

print(int(b))
print(int(c))
Output
764
324

int() fonksiyonunu kullanarak bir float’ı int’e dönüştürdüğümüzde, Python sayının ondalık kısmını keser ve yalnızca tam kısmını alır.

Yani örneğin 390.8 sayısını dönüştürdüğümüzde sonuç 390 olur.
Python, bu işlem sırasında yuvarlama (rounding) yapmaz. Sadece ondalık kısmı atar.

Bölme İşlemiyle Sayı Dönüşümü

Python 3’te, bir bölme işlemi yapıldığında sonuç otomatik olarak float türüne dönüştürülür.
Bu, Python 2’den farklıdır — Python 2’de sonuç genellikle tam sayı olarak dönerdi.

a = 5 / 2
print(a)
Output
2.5

Python 2’de ise iki tamsayı (int) arasında yapılan bölme işlemi, sonucu da tamsayı olarak döndürürdü.


String’lerle Dönüştürme

String, bir veya birden fazla karakterden (harf, sayı ya da sembol) oluşan bir dizidir.
Programlamada string’ler oldukça yaygın kullanılır ve çoğu zaman
string ↔ sayı dönüşümüne ihtiyaç duyarız.

Özellikle kullanıcıdan alınan veriler genellikle string olarak geldiği için,
bu değerleri işleyebilmek adına bazen sayıya çevirmek,
bazen de sayısal verileri string’e dönüştürmek gerekebilir.

Önce bir tamsayıyı (integer) string’e dönüştürme örneğine bakalım.
35 sayısını string’e çevirmek için, str() metoduna 35 değerini gönderebiliriz:

str(35)

Terminalde Python etkileşimli kabuğunu (python) açıp str(12) komutunu çalıştırdığında,
ekrana şu çıktı yazdırılır:

Output
'35'

12 sayısının etrafındaki tırnak işaretleri, artık bu değerin bir tamsayı (int) değil,
bir string (metin) olduğunu gösterir.

Değişkenlerle çalışırken, tamsayıları string’e dönüştürmenin ne kadar pratik olduğunu daha net görebiliriz.
Diyelim ki bir kullanıcının günlük kod yazma ilerlemesini takip ediyoruz ve
her seferinde kaç satır kod yazdığını sisteme kaydediyoruz.

Kullanıcıya geri bildirim verirken hem metin (string) hem de sayı (int) değerleri birlikte göstermek isteyebiliriz:

kullanici = "Ahmet"
satir = 50

print("Tebrikler, " + kullanici + "! Az önce " + satir + " satır kod yazdın.")

Bu kodu çalıştırdığımızda aşağıdaki hatayı alırız:

TypeError: can only concatenate str (not "int") to str

Python’da string ve integer değerleri doğrudan birleştiremeyiz.
Bu yüzden satir değişkenini birleştirmeden önce string’e dönüştürmemiz gerekir:

kullanici = "Ahmet"
satir = 50

print("Tebrikler, " + kullanici + "! Az önce " + str(satir) + " satır kod yazdın.")

Artık kodu çalıştırdığımızda, kullanıcıyı tebrik eden aşağıdaki çıktıyı alırız:

Tebrikler, Ahmet! Az önce 50 satır kod yazdın.

Eğer tamsayıyı değil de bir ondalıklı sayıyı (float) string’e dönüştürmek istiyorsak,
yine aynı adımları ve formatı izleriz.

Bir float değeri str() metoduna gönderdiğimizde, Python bize bu değerin string karşılığını döndürür.

Bu işlemi ister doğrudan sayıyla, ister bir değişken üzerinden yapabiliriz:

print(str(98.76))

sayi = 1204.89
print(str(sayi))
Output
98.76
1204.89

Dönüşümün doğru yapıldığını test etmek için, elde ettiğimiz string değeri başka bir metinle birleştirerek kontrol edebiliriz:

sayi = 1204.89
print("Toplam tutar: " + str(sayi) + " TL")
Output
Toplam tutar: 1204.89 TL

Birleştirme işlemi hata vermeden gerçekleştiğine göre,
ondalıklı sayımızın (float) başarıyla string’e dönüştürüldüğünden emin olabiliriz.
Python artık bu değeri bir metin olarak görüyor.

String’leri Sayıya Dönüştürme

String değerleri sayılara dönüştürmek için int() ve float() fonksiyonlarını kullanabiliriz.

Eğer string değeri ondalık içermezse, genellikle int() kullanarak tamsayıya çevirmek isteriz.

Örneğin, kullanıcı Ahmet’nin her gün yazdığı kod satırlarını takip ettiğimiz bir durumda bu değerleri matematiksel işlemlerle analiz etmek isteyebiliriz.
Ancak şu anda bu değerler string olarak saklanıyor:

satir_dun = "50"
satir_bugun = "108"

satir_fark = satir_bugun - satir_dun

print(satir_fark)
Output
TypeError: unsupported operand type(s) for -: 'str' and 'str'

İki sayısal değer string (metin) olarak saklandığı için hata aldık. - (çıkarma) işleci, iki string arasında geçerli değildir.

Bu hatayı çözmek için, string değerleri tamsayıya (int) dönüştürmemiz gerekir.
int() fonksiyonunu kullanarak bunu kolayca yapabiliriz:

satir_dun = "50"
satir_bugun = "114"

satir_fark = int(satir_bugun) - int(satir_dun)

print(satir_fark)
Output
64

Bu örnekte satir_fark değişkeni, işlem sonucunda otomatik olarak tamsayı (int) türünde olur
ve değeri 64’dir.

Eğer sonucu ondalıklı sayı (float) olarak almak istersek,
int() yerine float() fonksiyonunu kullanabiliriz:

Kullanıcımız Ahmet, artık ondalıklı puanlar (decimal values) kazanıyor.
Bu durumda, puanları doğru bir şekilde hesaplayabilmek için float türüyle çalışmamız gerekir.

toplam_puan = "5524.53"
yeni_puan = "45.30"

yeni_toplam = toplam_puan + yeni_puan

print(yeni_toplam)
Output
5524.5345.30

Bu durumda + operatörü iki string arasında geçerli bir işlemdir,
ancak bu işlem toplama değil, birleştirme (concatenation) anlamına gelir.

Yani Python, sayısal işlem yapmak yerine "5524.53" ve "45.30" değerlerini sadece yan yana yazar.

toplam_puan = "5524.53"
yeni_puan = "45.30"

yeni_toplam = float(toplam_puan) + float(yeni_puan)

print(yeni_toplam)
5569.83

Artık iki string değeri float türüne dönüştürdüğümüz için,
beklediğimiz sonucu elde ettik: 5524.53 + 45.30 = 5569.83

Python, bu değerleri artık ondalıklı sayılar olarak algıladığı için
gerçek bir matematiksel toplama işlemi gerçekleştirdi.

Eğer ondalık içeren bir string değeri doğrudan int() fonksiyonuyla
tamsayıya (integer) dönüştürmeye çalışırsak, Python bir hata verir:

sayi = "45.67"
print(int(sayi))
Output
ValueError: invalid literal for int() with base 10: '45.67'

Bir string içinde ondalık değer varsa ve bunu doğrudan int() fonksiyonuna verirsek,
Python bu değeri tamsayıya çeviremez ve hata verir.

String’leri sayılara dönüştürmek, elimizdeki verinin tipini hızlıca değiştirmemize olanak tanır.
Böylece başlangıçta metin (string) olarak gelen sayısal veriler üzerinde
matematiksel işlemler yapabilir, hesaplamalarımızı sorunsuzca gerçekleştirebiliriz.


Tuple ve List’e Dönüştürme

Python’da list() ve tuple() fonksiyonlarını kullanarak,
verileri sırasıyla liste (list) veya demet (tuple) veri tipine dönüştürebilirsin.

Bu fonksiyonlar, kendilerine verilen değeri alır ve belirtilen veri yapısına göre yeni bir koleksiyon oluşturur.

  • Bir liste (list), köşeli parantezler [ ] içinde tanımlanan,
    değiştirilebilir (mutable) ve sıralı (ordered) bir veri grubudur.

  • Bir demet (tuple) ise parantezler ( ) içinde tanımlanır
    ve değiştirilemez (immutable) bir sıralı veri grubudur.

Tuple’a Dönüştürme

Önce bir listeyi (list) tuple’a (demet) dönüştürerek başlayalım.
Tuple, değiştirilemez (immutable) bir veri tipi olduğu için,
bu dönüşüm programlarımızda daha verimli (optimize) bir yapı sunabilir.

tuple() metodunu kullandığımızda,
parantez içine verilen değerin tuple versiyonunu döndürür:

meyveler = ["elma", "muz", "kiraz"]
meyve_tuple = tuple(meyveler)
print(meyve_tuple)
('elma', 'muz', 'kiraz')

Görüldüğü gibi çıktı artık bir tuple şeklindedir;
öğeler köşeli parantezler [ ] yerine normal parantezler ( ) içinde yer alır.

Şimdi, bir listeyi temsil eden bir değişken üzerinde tuple() metodunu kullanalım:

sayilar = [1, 2, 3, 4]
sayilar_tuple = tuple(sayilar)
print(sayilar_tuple)
(1, 2, 3, 4)

Yine gördüğümüz gibi, liste değeri tuple’a dönüştü ve bu durum
öğelerin parantez ( ) içinde yer almasıyla anlaşılabiliyor.

Ayrıca sadece listeler değil, herhangi bir yinelenebilir (iterable) veri tipi de
tuple() fonksiyonu ile tuple’a dönüştürülebilir — buna string’ler de dahildir:

kelime = "Python"
harfler = tuple(kelime)
print(harfler)
('P', 'y', 't', 'h', 'o', 'n')

String’ler yinelenebilir (iterable) olduğu için,
tuple() metoduyla kolayca tuple’a dönüştürülebilirler.

Ancak tamsayı (int) veya ondalıklı sayı (float) gibi iterable olmayan veri tiplerinde
aynı işlemi yapmaya çalışırsak, Python bir TypeError (tip hatası) döndürür:

print(tuple(5000))
Output
TypeError: 'int' object is not iterable

Her ne kadar tuple(str(5000)) şeklinde önce sayıyı string’e, ardından tuple’a dönüştürmek mümkün olsa da,
bu tür işlemler gereksiz karmaşıklık yaratır.

Python’da en iyi uygulama, basit ve okunabilir kod yazmaktır, yani dönüşüm gerçekten gerekiyorsa, onu açık ve mantıklı bir şekilde yapmak her zaman daha iyidir.

Listeye Dönüştürme

Bazı durumlarda, özellikle tuple (demet) verilerini listeye (list) dönüştürmek isteyebilirsin.
Bunun nedeni, listelerin değiştirilebilir (mutable) olmasıdır —
yani içeriğini sonradan düzenleyebilirsin.

Bu dönüşümü yapmak için list() metodunu kullanırız.
Liste oluşturma sözdiziminde parantezler kullanıldığı için,
list() metodunun ve print() fonksiyonunun parantezlerini eklemeyi unutma:

print(list(('kırmızı', 'mavi', 'yeşil')))

['kırmızı', 'mavi', 'yeşil']

Köşeli parantezler [ ], list() metodundan dönen sonucun artık bir liste olduğunu gösterir.
Yani orijinal tuple değeri başarıyla listeye dönüştürülmüştür.

Kodun okunabilirliğini artırmak için, doğrudan list() fonksiyonunu print() içine yazmak yerine
önce sonucu bir değişkene atayabiliriz:

renkler = ("kırmızı", "mavi", "yeşil")
renk_listesi = list(renkler)

print(renk_listesi)
['kırmızı', 'mavi', 'yeşil']

Tıpkı tuple’larda olduğu gibi, string değerler de list() metoduyla listeye dönüştürülebilir:

kelime = "Python"
harf_listesi = list(kelime)
print(harf_listesi)
['P', 'y', 't', 'h', 'o', 'n']

Burada 'shark' string’i listeye dönüştürülmüştür ve böylece orijinal değerin değiştirilebilir (mutable) bir versiyonu elde edilmiştir.

Yani artık listedeki harfleri tek tek silebilir, ekleyebilir veya değiştirebilirsin.


Sonuç

Bu Python rehberinde, önemli yerleşik veri tiplerini nasıl birbirine dönüştürebileceğini öğrendin.
Bunu yaparken çoğunlukla Python’un yerleşik (built-in) metodlarını kullandık.

Veri tiplerini dönüştürme becerisi, program yazarken sana daha fazla esneklik kazandırır.
Bu sayede string’leri sayılara, listeleri tuple’a veya tam tersine dönüştürerek
verileri farklı durumlara uygun şekilde işleyebilir,
daha dinamik, sağlam ve güçlü Python uygulamaları geliştirebilirsin.