Bloğa geri dön

Python 3: Veri Türlerini Dönüştürme Rehberi

Python 3: Veri Türlerini Dönüştürme Rehberi

Giriş

Python genellikle sistem entegrasyonu amacıyla kullanılan bir programlama dilidir. Bu dil, ‘veri tipleri’ adı verilen bir yapı kullanır. Bu veri tipleri, belirli bir veri türünü sınıflandırmaya veya tanımlamaya yardımcı olur. Bu, belirli bir veri tipinin, ona uygulayabileceğiniz özel değerler ve işlemlerle ilgili olduğu anlamına gelir. Her veri tipi farklı bir şekilde programlanır ve düzenlenir. Bunun nedeni, her veri tipinin farklı bir yapıya sahip olmasıdır. Örneğin, karakter dizileri (string) veya tam sayılarla (integer) çalışıyor olabilirsiniz.

Bu kılavuzun amacı, Python'daki çeşitli veri tiplerini tanımanıza yardımcı olmaktır. Sadece bununla kalmayıp, veri tiplerini birbirine nasıl dönüştüreceğinizi de derinlemesine tartışacağız. Bu eğitimin sonunda sayılar, karakter dizileri (string), demetler (tuple) ve listeler gibi veri tiplerini ve bunları nasıl dönüştüreceğinizi öğrenmiş olacaksınız.

Sayıların Dönüştürülmesi

Python'da sayılardan bahsettiğimizde, iki seçenekten birini kastediyor olabiliriz. Ya tam sayılar ya da ondalıklı sayılar ile çalışıyoruzdur. Birini diğerine dönüştürmeniz gereken zamanlar olabilir. Tam sayıları kolayca ondalıklı sayılara, ondalıklı sayıları da tam sayılara dönüştürmeniz mümkündür.

  • Dönüşüm: Tam Sayılardan Ondalıklı Sayılara

İlk olarak, tam sayıları ondalıklı sayılara nasıl dönüştürebileceğinizi inceleyerek başlayacağız. Bunu yapmanın yolu, adında bir komut kullanmaktır: float(). Bu fonksiyon, verilen herhangi bir tam sayıyı ondalıklı bir sayıya dönüştürür. Tek yapmanız gereken tam sayıyı parantez içine yerleştirmektir. Örneğin, 57 tam sayısını ondalıklı sayı (float) veri tipine dönüştürmek istediğinizi varsayalım. Dönüşümü şu şekilde gerçekleştirebilirsiniz:

Bu komutu çalıştırmanızın sonucunda, tam sayı 57 ondalıklı sayıya dönüşecektir: 57.0.

Bunu yapmanın başka bir yolu da bir değişken kullanmaktır. Tam sayınızı bir değişken aracılığıyla tanımlayabilir ve ardından yukarıdaki komutla ondalıklı sayıyı yazdırabilirsiniz. Diyelim ki f değişkeninin değerini 57 olarak belirlediniz. Bu durumda dönüşüm şu şekilde gerçekleşecektir:

  • Dönüşüm: Ondalıklı Sayılardan Tam Sayılara

Ondalıklı sayıları tam sayılara dönüştürmeniz de mümkündür. Önceki komuta benzer şekilde, bu dönüşüm int() fonksiyonu kullanılarak yapılabilir. Tıpkı geçen seferki gibi, tek yapmanız gereken ondalıklı sayıyı fonksiyondan sonraki parantezlerin içine eklemektir.

Örneğimizde, ondalıklı sayıyı 390 tam sayıya dönüştüreceğiz. Dönüşümü yapmak için aşağıdaki komutu çalıştırırız:

Bu fonksiyonu çalıştırmanın sonucunda, 390 ondalıklı formuna dönüşecektir: 390.8.

Aynı şekilde, dönüşümü değişkenler yardımıyla da gerçekleştirebilirsiniz. Sadece bununla kalmayıp, aynı anda birden fazla dönüşüm de yapabilirsiniz. Varsayalım ki b değeri 125.0 ve c değeri 390.8 olsun. Bu ondalıklı sayı değerlerini şu şekilde yazdırabilirsiniz:

Gördüğünüz gibi, tam sayılar başarıyla ondalıklı sayılara dönüştü.

Ondalıklı sayıdan tam sayıya dönüşüm sırasında unutulmaması gereken önemli bir husus, fonksiyonun değerleri yukarı yuvarlamamasıdır. Bu, ondalıklı sayının ondalık kısmının basitçe atıldığı anlamına gelir. Fonksiyon, 390.8 gibi bir değeri 390'a yuvarlamaz; size bir tam sayı vermek için sadece 0.8 birimini kaldırır.

  • Dönüşüm: Bölme Yoluyla

Tam sayıları bölme yoluyla ondalıklı sayılara dönüştürmeniz de mümkündür. Tam sayıları birbirine bölmek, size ondalıklı bir sayı olan bir bölüm verebilir. Örneğin, 5'i 2'ye böldüğünüzde alacağınız yanıt, bir ondalıklı sayı (float) olan 2.5 olacaktır. Şöyle bir göz atın:

Bu, Python 3'ün özel bir özelliğidir. Python 2'de böyle bir bölme işlemi yapmak, size yalnızca şu şekilde bir tam sayı yanıtı verirdi: 5 / 2 = 2.

Karakter Dizileri (String) ile Dönüşüm

Şununla dönüşümün nasıl yapılacağından bahsetmeye başlamadan önce: karakter dizileri, karakter dizilerinin (string) gerçekte ne olduğunu bilmeniz gerekir. Henüz bilmiyorsanız, karakter dizileri karakter dizilimleridir. Bu; harflerden, sayılardan, sembollerden veya diğer karakterlerden oluşan bir dizi olabilir. Karakter dizilerini bilgisayar verileriyle ilişkili olarak biliyor olabilirsiniz. Bunun nedeni, bilgisayarların işlemlerini gerçekleştirmek için bu veri türünü sıklıkla kullanmasıdır.

Kullanıcı tarafından oluşturulan verilerle çalışıyorsanız, bu dönüşümleri sık sık yapmanız gerekecektir. Bu yüzden sayıları karakter dizilerine ve karakter dizilerini sayılara nasıl dönüştüreceğinizi bilmek oldukça yararlıdır.

  • Dönüşüm: Sayılardan Karakter Dizilerine

Sayıları karakter dizilerine dönüştürmek için str() işlevini kullanabilirsiniz. Daha önce olduğu gibi, dönüştürmek istediğiniz değeri parantez içine yerleştireceksiniz. Bu değer bir sayı veya bir değişken olabilir. Başlangıç olarak, 12 gibi bir tam sayıyı karakter dizisi değerine nasıl dönüştüreceğinizi inceleyelim:

Görebileceğiniz gibi, çıktı bir karakter dizisi değeri gösteriyor. Karakter dizisi değeri tırnak işaretleri ile belirtilir.

Öte yandan, işlevin içine tam sayılar yerine değişkenler de yerleştirebilirsiniz. İşlevin gerçekten yararlı hale geldiği yer burasıdır. Örneğin, bir kullanıcının belirli bir zaman diliminde kaç satır kod yazdığını izlemek ve raporlamak istediğinizi varsayalım. Bu bilgiyi kullanıcıya göstermek için hem karakter dizisini hem de tam sayı değerlerini şu şekilde yazdırmanız gerekir:

Maalesef, yukarıdaki kodu çalıştırmayı denerseniz, şöyle bir hata alırsınız:

concatenation error

Bu, lines değişkenini kodu çalıştırabilmek için karakter dizisi değerine dönüştürmeniz gerektiği anlamına gelir.

Artık dönüşüm işlevini yerleştirdiğinize göre, komutu başarıyla çalıştırabileceksiniz. Çıktı olarak aşağıdakine benzer bir şey göreceksiniz:

Benzer şekilde, bir karakter dizisine tam sayı yerine ondalıklı sayı (float) eklemek isterseniz, aynı şeyi yapmanız gerekir. Daha önce olduğu gibi, değeri doğrudan ekleyebilir veya bir değişken kullanabilirsiniz. Örneğin:

Değerin doğru olduğundan emin olmak istiyorsanız, onu şu şekilde bir karakter dizisiyle birleştirebilirsiniz:

Herhangi bir hata almadığınız için bu, dönüşümün başarılı olduğu anlamına gelir.

  • Dönüşüm: Karakter Dizilerinden Sayılara

Benzer şekilde, karakter dizilerini de sayılara dönüştürebilirsiniz. Karakter dizinizde ondalık basamak yoksa, onu bir tam sayıya dönüştürmeniz daha iyi olur. Karakter dizisini int() işlevini kullanarak tam sayılara dönüştürebilirsiniz.

Tam sayı dönüşümündeki önceki örneğimizi kullanmaya devam edeceğiz. Bu nedenle, Sammy adında bir kullanıcının kod yazma ilerlemesini günlük olarak takip etmek istediğini varsayalım. Bir programcı olarak, bu bilgiyi kullanıcıya yaratıcı bir şekilde sunmak istiyorsunuz. Ancak bu değerler karakter dizisi olarak saklandığından, bunlara – (çıkarma) gibi bazı temel işleçleri uygulayamazsınız. Bunu aşağıda gözlemleyebilirsiniz:

unsupported operand

Görebileceğiniz gibi, işleç karakter dizisi değerleri üzerinde çalışmıyor. Bunun yerine bir hata alıyorsunuz. Değerlerle çalışabilmek için, int() işlevini kullanarak karakter dizilerini tam sayılara dönüştürmeniz gerekir:

Burada, lines_more bir değişkendir. Bu değişken bir tam sayıdır ve örneğimizde 58 olan sonuç değerine eşittir.

Diğer yandan, ondalık sayılar varsa float() fonksiyonunu kullanarak dizeleri kayan noktalı sayılara (float) dönüştürebilirsiniz. Bu örnekte, Sammy adlı kullanıcının yazdığı satır sayısı yerine kazandığı puanları kullanacağız. Puanlar ondalık sayılarla gösterilmektedir:

Çıktı bir hata olarak görünmese de yine de doğru değildir. Bu durumda + operatörü veya toplama işlemi çalıştı. Ancak iki sayıyı toplamak yerine, sadece iki dize değerini yan yana yerleştirdi.

Bu yüzden öncelikle float() fonksiyonunu kullanarak bu dizeleri kayan noktalı (float) değerlere dönüştürmeniz gerekir:

Yukarıda görebileceğiniz gibi, iki değer birbiriyle toplandı. Unutmayın: ondalık bir dize değerini tam sayıya (integer) dönüştürmeye çalışırsanız, şöyle bir hata alırsınız:

cast error

Bu nedenle, öncelikle dize veri türünü sayılara dönüştürmeniz gerekir. Ardından, diğer işlemleri gerçekleştirebilir ve sayısal değer üzerinde kolayca dönüştürme yapabilirsiniz.

Demetlere (Tuple) ve Listelere Dönüştürme

Listeler ve demetler (tuples) Python 3'te kullanabileceğiniz diğer birkaç veri türüdür. Bunların her ikisi de bir öğe dizisinden oluşur. İkisi arasındaki fark, listenin değiştirilebilir (mutable), demetin ise değiştirilemez (immutable) olmasıdır. Ayrıca, bir listenin öğeleri köşeli parantez içine alınırken [ ], bir demettekiler parantez içine alınır ( ).

  • Dönüşüm: Listelerden Demetlere

Öncelikle, bir listenin nasıl demete dönüştürebileceğinizi inceleyelim. Değiştirilemez bir veri türüne ihtiyacınız varsa bu dönüşümü yapmanız gerekebilir. Bu amaçla, şu fonksiyonu kullanmanız gerekecektir: tuple():

Gördüğünüz gibi, listenin öğeleri artık bir demet içindedir. Bu, öğeleri çevreleyen parantezlerle gösterilir.

Ayrıca tuple() fonksiyonunu, öğelerin listesine eşit olan bir değişkenle de kullanabilirsiniz:

Pratik bir şekilde, herhangi bir veri türünü bir demete dönüştürebilirsiniz. Örneğin, bir dizeyi bir demete şu şekilde dönüştürebilirsiniz:

Dizeler yinelenebilir (iterable) oldukları için demetlere dönüştürülebilirler. Anlaşılacağı üzere, yinelenebilir olmayan veri türleri demetlere dönüştürülemez. Diyelim ki bazı tam sayıları veya bir kayan noktalı sayıyı demete dönüştürmek istiyorsunuz. Eğer tuple() fonksiyonunu çalıştıracak olursanız, şöyle bir hata alırsınız:

Tip hatası (type error), tamsayının (integer) yinelenebilir (iterable) olmadığını gösterir. Dönüştürmenin gerçekleşememesinin nedeni budur. Karmaşık bir yol, önce tamsayıyı bir dizeye (string) ve ardından bir demete (tuple) dönüştürmek olacaktır. Bunu aşağıdaki fonksiyonla yapabilirsiniz: tuple(str(5000)). Ancak bu tür karmaşıklıklardan kaçınmanızı öneririz.

  • Dönüşüm: Demetleri Listelere Dönüştürme

Aksine, değiştirilebilir (mutable) verilere ihtiyacınız varsa bir demeti listeye dönüştürmeniz gerekebilir. Bu amaçla, list() fonksiyonunu şu şekilde kullanacaksınız:

Köşeli parantezlerin varlığı, elde edilen çıktının bir demet olduğunu gösterir. Bir demeti listeye dönüştürmek için list() kullanarak kod yazarken, hem list() yöntemi hem de print() yöntemi için parantez eklediğinizden emin olmalısınız. Ancak bu, kodu biraz okunaksız hale getirir. Daha az karmaşık hale getirmek için, bunun yerine bir değişken kullanarak bir çift parantezi kaldırabilirsiniz:

Demetlere benzer şekilde, dizeleri de doğrudan listelere dönüştürebilirsiniz:

Sonuç

Python 3'te veri türlerini dönüştürmenin yollarını arıyorsanız bu kılavuz size yardımcı olacaktır. Farklı veri türlerini ve bunların yerleşik Python fonksiyonlarını kullanarak birbirine nasıl dönüştürülebileceğini ayrıntılı olarak ele aldık. Bu dönüşümleri bilmek, programlama deneyiminizi çok daha kolay ve kapsamlı hale getirmeye yardımcı olacaktır.

Python ile neler yapabileceğinizi daha fazla keşfetmek için diğer kılavuzlarımızı takip edin:

Keyifli Kodlamalar!

author

Akshay Nagpal

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.