0
user Programlama Akademi
29-08-2024 5:21 PM
Python

Python 3'te Veri Türleri Nasıl Dönüşturulur

Giriş

Python'da veri tipleri, belirli bir veri türünü sınıflandırmak için kullanılır ve bu tipin alabileceği değerleri ve bu değerler üzerinde gerçekleştirilebilecek işlemleri belirler. Programlama yaparken, bazen değerleri farklı şekillerde işleyebilmek için tipler arasında dönüştürme yapmamız gerekebilir. Örneğin, sayısal değerleri stringlerle (dizelerle) birleştirmemiz veya tamsayı olarak tanımlanmış sayılarda ondalık basamakları temsil etmemiz gerekebilir.

Bu öğretici, sayıların, dizelerin, demetlerin (tuples) ve listelerin nasıl dönüştürüleceğini anlatacak ve farklı kullanım senaryolarına alışmanıza yardımcı olacak örnekler sunacaktır.


Önkoşullar

Bilgisayarınızda veya sunucunuzda Python 3 yüklü olmalı ve bir programlama ortamı kurulmuş olmalıdır. Eğer bir programlama ortamı kurulu değilse, işletim sisteminize (Ubuntu, CentOS, Debian, vb.) uygun bir yerel programlama ortamı veya sunucu programlama ortamı kurulum ve yapılandırma kılavuzlarına bakabilirsiniz.


Sayı Türlerini Dönüştürme

Python'da iki sayı veri tipi vardır:tamsayılar (integers) ve kayan noktalı sayılar (floating-point numbers veya floats). Bazen başka birinin kodu üzerinde çalışırken bir tamsayıyı bir kayar noktaya veya tam tersine dönüştürmemiz gerekebilir ya da aslında ihtiyaç duyduğumuz bir kayan nokta iken tamsayı kullandığımızı fark edebiliriz. Python, tamsayıları kolayca kayan noktalara ve kayan noktaları tamsayılara dönüştürmenizi sağlayan yerleşik yöntemlere sahiptir.


Tamsayıları Kayan Noktalara Dönüştürme

Python'un float() yöntemi tamsayıları kayan noktalara dönüştürecektir. Bu fonksiyonu kullanmak için parantez içine bir tamsayı ekleyin:

Bilgi: Bu öğreticideki örnek kodları takip etmek için, yerel sisteminizde Python interaktif kabuğunu açmak üzere python3 komutunu çalıştırın. Ardından, örnekleri >>> istemcisinin ardından kopyalayabilir, yapıştırabilir veya düzenleyebilirsiniz.

float(57)

Bu durumda, 57 sayısı 57.0'a dönüştürülecektir.

Bunu bir değişkenle de kullanabilirsiniz. f'yi 57'ye eşitleyelim ve ardından yeni kayar noktayı yazdıralım:

f = 57
print(float(f))
Çıktı
57.0

float() fonksiyonunu kullanarak tamsayıları kayan noktalara dönüştürebiliriz.


Kayan Noktaları Tamsayılara Dönüştürme

Python ayrıca kayan noktaları tamsayılara dönüştürmek için yerleşik bir fonksiyona sahiptir: int().

int() fonksiyonu, float() fonksiyonuna benzer şekilde çalışır: Bir kayan noktalı sayıyı parantez içine ekleyerek onu tamsayıya dönüştürebilirsiniz:

int(390.8)

Bu durumda, 390.8 sayısı 390'a dönüştürülecektir.

Bu yöntemi değişkenlerle de kullanabilirsiniz. b'yi 125.0'a ve c'yi 390.8'e eşitleyelim, ardından yeni tamsayıları yazdıralım:

b = 125.0
c = 390.8

print(int(b))
print(int(c))
Çıktı
125
390

int() fonksiyonuyla kayan noktaları tamsayılara dönüştürürken, Python, bir tamsayı oluşturmak için kayan noktanın ondalık ve kalan rakamlarını keser. 390.8'i 391'e yuvarlamak istememize rağmen, Python bunu int() fonksiyonu aracılığıyla yapmayacaktır.


Bölme Yoluyla Dönüştürülen Sayılar

Python 3'te, bölümden elde edilen sonuçlar tamsayılardan kayan noktalara dönüştürülür, ancak Python 2'de bu durum geçerli değildir. Yani, 5'i 2'ye böldüğünüzde, Python 3'te bir kayan nokta sonucu alırsınız (2.5):

a = 5 / 2
print(a)
Çıktı
2.5

Python 2'de, iki tamsayı ile çalıştığınızdan, bunun yerine bir tamsayı olarak geri dönerdiniz:5 / 2 = 2. Daha fazla bilgi için "Python 2 ve Python 3: Pratik Farklar" adlı makaleye göz atabilirsiniz.


Dizelerle Dönüştürme

Dize (string), bir veya daha fazla karakterin (harf, rakam, sembol) bir dizisidir. Dizeler, bilgisayar programlarında yaygın bir veri biçimidir ve kullanıcı tarafından oluşturulan verileri alırken, özellikle dizeleri sayılara veya sayıları dizelere dönüştürmemiz gerekebilir.


Sayıları Dizelere Dönüştürme

Sayıları dizelere dönüştürmek için str() yöntemini kullanabiliriz. Parantez içine bir sayı veya değişken ekleyerek bu yöntemi çağırdığımızda, bu sayısal değer bir dize değere dönüştürülecektir.

Önce tamsayıları dönüştürmeye bakalım. 12 tamsayısını bir dize değerine dönüştürmek için str() yöntemine 12'yi geçirebilirsiniz:

str(12)

Terminal penceresindeki Python interaktif kabuğunda str(12) çalıştırıldığında aşağıdaki çıktıyı alacaksınız:

Çıktı
'12'

12 sayısının etrafındaki tırnak işaretleri, sayının artık bir tamsayı olmadığını, artık bir dize değeri olduğunu belirtir.

Değişkenlerle birlikte tamsayıları dizelere dönüştürmenin ne kadar pratik olabileceğini görebiliriz. Örneğin, bir kullanıcının günlük programlama ilerlemesini takip etmek ve bir seferde kaç satır kod yazdığını girdiğini varsayalım. Bu geri bildirimi kullanıcıya göstermek istiyoruz ve aynı anda dize ve tamsayı değerlerini yazdıracağız:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

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

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

Python'da dizelerle tamsayıları birleştiremiyoruz, bu yüzden lines değişkenini bir dize değerine dönüştürmemiz gerekiyor:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")

Şimdi, kodu çalıştırdığımızda, kullanıcımızı ilerlemesinden dolayı tebrik eden aşağıdaki çıktıyı alıyoruz:

Çıktı
Congratulations, Sammy! You just wrote 50 lines of code.

Bir tam sayıyı değil de bir kayan noktayı dizeye dönüştürmek istiyorsak, aynı adımları ve formatı izleriz. Bir kayan noktayı str() yöntemine geçirdiğimizde, kayan noktanın bir dize değeri döndürülür. Kayan nokta değerinin kendisini veya bir değişkeni kullanabiliriz:

print(str(421.034))

f = 5524.53
print(str(f))
Çıktı
421.034
5524.53

Bunu test etmek için bir dizeyle birleştirme yapabiliriz:

f = 5524.53
print("Sammy has " + str(f) + " points.")
Çıktı
Sammy has 5524.53 points.

Kayan noktanın doğru şekilde bir dizeye dönüştürüldüğünden emin olabiliriz çünkü birleştirme hatasız gerçekleştirildi.


Dizeleri Sayılara Dönüştürme

Dizeler, int() ve float() yöntemlerini kullanarak sayılara dönüştürülebilir.

Dizenizin ondalık basamağı yoksa, muhtemelen bunu int() yöntemiyle tamsayıya dönüştürmek istersiniz.

Sammy adlı kullanıcının her gün yazdığı kod satırlarını takip ettiği örneği ele alalım. Kullanıcıya daha ilginç geri bildirimler sağlamak için bu değerleri matematikle işlemek isteyebiliriz, ancak bu değerler şu anda dizelerde saklanmaktadır:

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

print(lines_more)
Çıktı
TypeError: unsupported operand type(s) for -: 'str' and 'str'

İki sayısal değer dizelerde saklandığı için bir hata aldık. Çıkarma işleci -, iki dize değeri için geçerli bir işleç değildir.

Kodumuzu, dizeleri tamsayılara dönüştürecek ve başlangıçta dizeler olan bu değerlerle matematik yapmamıza izin verecek olan int() yöntemini içerecek şekilde değiştirelim.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
Çıktı
58

Bu örnekte, lines_more değişkeni otomatik olarak bir tamsayıdır ve sayısal değeri 58'e eşittir.

Yukarıdaki örnekteki sayıları int() yöntemi yerine float() yöntemini kullanarak kayan nokta değerlerine de dönüştürebiliriz. 58 çıktısı yerine 58.0 bir kayan nokta çıktısı alırız.

Kullanıcı Sammy puanları ondalık değerlerle kazanıyor:

total_points = "5524.53"
new_points = "45.30"

new_total_points = total_points + new_points

print(new_total_points)
Çıktı
5524.5345.30

Bu durumda, iki dize ile + işleci geçerli bir işlemdir, ancak iki sayısal değeri toplamak yerine iki dizeyi birleştiriyor. Bu yüzden çıktımız sıradışı görünüyor çünkü sadece iki değeri yan yana yerleştiriyor.

Bu dizileri herhangi bir matematiksel işlem yapmadan önce float() yöntemi ile kayan noktalara dönüştüreceğiz:

total_points = "5524.53"
new_points = "45.30"

new_total_points = float(total_points) + float(new_points)

print(new_total_points)
Çıktı
5569.83

Artık iki dizeyi kayan noktalara dönüştürdüğümüzden, 45.30'un 5524.53'e eklediği beklenen sonucu alıyoruz.

Eğer ondalık basamakları olan bir dize değerini tamsayıya dönüştürmeye çalışırsak bir hata alırız:

f = "54.23"
print(int(f))
Çıktı
ValueError: invalid literal for int() with base 10: '54.23'

Bir dizide ondalık değeri int() yöntemine geçirirsek bir hata alırız çünkü bu, bir tamsayıya dönüştürülemez.

Dizeleri sayılara dönüştürmek, dizelerdeki orijinal olarak sayı olan değerler üzerinde işlemler gerçekleştirebilmemiz için çalıştığımız veri türünü hızla değiştirmemizi sağlar.


Demetlere ve Listelere Dönüştürme

list() ve tuple() yöntemlerini kullanarak, bu yöntemlere geçirilen değerleri sırasıyla liste ve demet veri türüne dönüştürebilirsiniz. Python'da:

  • Liste (list): Köşeli parantezler içinde yer alan, sıralı, değiştirilebilir bir eleman dizisidir [ ].
  • Demet (tuple): Parantezler içinde yer alan, sıralı, değiştirilemez bir eleman dizisidir ( ).


Demetlere Dönüştürme

Bir listeyi bir demete dönüştürmekle başlayalım. Bir listeyi demete dönüştürmek, değiştirilemez bir veri türü olduğundan, oluşturduğumuz programlara önemli bir optimizasyon sağlayabilir. tuple() yöntemini kullandığımızda, içine geçirilen değerin demet versiyonunu döndürecektir.

print(tuple(['pull request', 'open source', 'repository', 'branch']))
Çıktı
('pull request', 'open source', 'repository', 'branch')

Öğeler köşeli parantezler yerine parantezler içinde yer aldığından, bir demetin çıktısını gördük.

Bir listeyi temsil eden bir değişkenle tuple() kullanalım:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Çıktı
('shark', 'cuttlefish', 'squid', 'mantis shrimp')

Yine, liste değeri, parantezlerle gösterilen bir demet değerine dönüştürülmüştür. Dizeler de dahil olmak üzere, demetlere dönüştürülebilecek her türlü yineleyici türünü kullanabiliriz:

print(tuple('Sammy'))
Çıktı
('S', 'a', 'm', 'm', 'y')

Dizelerde yineleme yapabildiğimiz için, tuple() yöntemiyle bunları demetlere dönüştürebiliriz. Bununla birlikte, tamsayılar ve kayan noktalar gibi yineleyici olmayan veri türleriyle bir tür hatası alırız:

print(tuple(5000))
Çıktı
TypeError: 'int' object is not iterable

Tamsayıyı bir dizeye dönüştürmek ve ardından bir demete dönüştürmek mümkün olsa da, örneğin tuple(str(5000)) gibi, karmaşık dönüştürmeler yerine okunabilir kodu tercih etmek en iyisidir.


Listelere Dönüştürme

Değerleri, özellikle demetleri listelere dönüştürmek, bu değerin değiştirilebilir bir versiyonuna ihtiyacınız olduğunda yararlı olabilir.

Aşağıdaki demeti bir listeye dönüştürmek için list() yöntemini kullanacağız. Liste oluşturma sözdizimi parantez kullandığından, list() yönteminin parantezlerini ve bu durumda print() yöntemini de eklemeyi unutmayın:

print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Çıktı
['blue coral', 'staghorn coral', 'pillar coral']

Köşeli parantezler, liste ( ) yönteminden geçirilen orijinal demet değerinden bir listenin döndürüldüğünü belirtir.

Kodu daha okunabilir hale getirmek için bir değişken kullanarak parantez çiftlerinden birini kaldırabiliriz:

coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)

print(list(coral)) yazdırırsak, yukarıdakiyle aynı çıktıyı alırız.

Tıpkı demetler gibi dizeler de listelere dönüştürülebilir:

print(list('shark'))
Çıktı
['s', 'h', 'a', 'r', 'k']

Burada 'shark' dizgesi bir listeye dönüştürüldü ve orijinal değerin değiştirilebilir bir versiyonu sağlandı.


Sonuç

Bu Python öğreticisi, yerleşik yöntemler aracılığıyla önemli yerel veri türlerinden bazılarının diğer veri türlerine nasıl dönüştürüleceğini gösterdi. Python'da veri türlerini dönüştürebilmek, programlarınızı yazarken size ekstra esneklik sağlar.


Lisa Tagliaferri tarafından yazılan How To Convert Data Types in Python 3 Program makalesinin düzenlenmiş çevirisi.

Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap