Python 108 - Veri Yapıları Özet
Merhabalar,
Programlamada bir çözüm geliştirirken alet çantamızı iyi tanımak önemli bir avantajdır. Bu noktada veri yapıları hayati bir önem taşır. Şu ana kadar tekil veri olarak tam ve ondalıklı sayıları, metin/yazı veri türünü, True/ False (bool
) karar türünü; çoğul veri olarak da list
eleri gördük. Bunların her birini bir değişkende tuttuk ve üzerlerinde işlemler yaptık.
Bugün listelere ek olarak tuple
, dictionary
ve set
veri tiplerini kısaca özetleyeceğiz. Bir değişkenin türünün ne olduğunu sonradan kontrol etmek istersek type()
fonksiyonunu kullanabiliriz. Mesela yas = 35
dedikten sonra type(yas)
dersek
sonucunu alırız. Aşağıda da örnekleri gelecek.
tuple
veri yapısı
tuple
(tüpıl okuyabiliriz) veri yapısı listelerle aynı desek yanlış olmaz. Tek farkları bir tuple'da hangi elemanlar olduğunu (ve sıralarını) bir kez tanımladıktan sonra ilerleyen kodda daha onları değiştiremiyoruz. Yani tuple'ları anti-değişken ya da sabit değişken gibi düşünebiliriz. Hatırlayın bir listeye eleman ekleyebiliyor, değerini değiştirebiliyor ve silebiliyorduk ama burada yapamıyoruz. Bozulmasını istemediğimiz verilerimiz için ideal bir sistem. Detayına ayrı bir yazıda gireceğiz ama şimdi hemen örnek bir tuple görelim:
# tuple örnekleri
devlet = ('cumhuriyet', 'nitelikleri', 'bölünmez bütünlük-dil-bayrak-marş-başkent', 'değiştirilemez' )
merkez = ( 39.9405, 32.8457 )
test = ( True, True, False )
print(type(test)) #
Python virgülle ayırdığımız değerlerden bir tuple oluşturacağını normal parantezlerden ( )
anlıyor. Aynnı elemanları köşeli parantezle [ ]
tanımlasaydık yukarısı bir tuple değil liste olacaktı.
set
veri yapısı
Listeler ve tuple'larda sıralama sözkonusu, artı bir listenin başındaki bir elemanın aynısından sonuna da ekleyebiliriz. Ya da bir tuple tanımlarken içinde aynı eleman birden fazla geçebilir. Ancak bazı senaryolarda sıra değil aidiyet, üye olup olmama ya da tekrarların olup olmaması durumları önemli olacaktır. Matematikteki küme kavramını hatırlayın. Kesişme, birleşme, fark işlemlerini hatırlayın. İşte tüm bunları da set
verileriyle yapabiliyoruz. set
leri de ileride detaylandıracağız ama yine bir örnekle neye benziyor görelim:
# set örenekleri
günler = { 'pt', 'sa', 'ça', 'pe', 'cu'}
sayılar = { 1, 2, 3, 4, 5 }
print(type(günler)) #
Bu sefer virgülle ayırdığımız değerleri süslü paranteze { }
alıyoruz ve Python bunları artık bir set
olarak değerlendirecek.
dict
veri yapısı
dictionary
ler de (dikşınıry diye okuyabiliriz) çok kullanışlı başka bir veri yapısı. Farklı özellikleri derli toplu bir arada tutmak istediğimiz durumlar için kullanırız. Örnekle anlatalım:
# dict örenekleri
telefon = { 'ali' : 500500, 'ayşe' : 500600, 'can': 500700 }
ogrenci = { "no" : 120, "ad" : "Ali", "soyad" : "Şen"}
plaka = { "istanbul" : "34", "ankara" : "06" }
kullanıcı = { "email" : "samet@xyz.com", "user" : "samet", "pass" : "123abc" }
print(type(kullanıcı)) #
Burada farkettiyseniz hep ikili bir yapı sözkonusu. telefon, öğrenci, plaka, kullanıcı gibi bir ana değişkene ait alt özelliklerin neler olduğu ve değeri şeklinde. Tüm bu özellik : değer
çiftleri iki nokta üstüsteyle verilmeli ve çiftler arasında virgül olmalı. Hepsi set
teki gibi süslü paranteze { }
alınmalı. Python süslü parantez görünce ya set
ya da dict
kararı veriyor. Virgülle ayrılmış veride iki nokta varsa dict
, yoksa set
.
Yukarıdaki tanımlamalardan sonra telefon["ali"]
bize 500500, ogrenci["no"]
120, plaka["istanbul"]
"34", kullanıcı["email"]
"samet@xyz.com" verecektir.
Tüm bu yapılarda merkez veri olarak ister int
, ister float
, ister str
, ister bool
değerler tutabildiğimize dikkat edin. Bir sonraki yazıda görüşmek dileklerimle…
Kaynakça
- Python 117 - Numpy 2 / 11.07.2021
- Python 116 - Pythonu online ve kütüphaneleriyle birlikte kullanmak / 04.07.2021
- Python 115 - Pythonda Kütüphaneler ve NumPy / 27.06.2021
- Python 114 - Alıştırmalar / 20.06.2021
- Python 113 - String İşlemleri / 13.06.2021
- Python 112 - For ve While döngüleri / 30.05.2021
- Python 111 - Özet / 23.05.2021
- Python 110 - Fonksiyonlar / 29.03.2021
- Python 109 - Slicing / 28.02.2021