Python List Object Attributes: Her Şeyin Derinlerine İniyoruz

Python Listeleri ve Nesne Özellikleri

Python, dinamik ve esnek bir programlama dili olarak, listeler gibi temel veri yapılarıyla birlikte çalışmanın kolaylığını sunar. Listeler, birden fazla öğeyi bir arada tutarak hem bellek yönetimini kolaylaştırır hem de işlemler üzerinde hız kazandırır. Ancak burada dikkat edilmesi gereken bir konu var: Listeler yalnızca temel veri türlerini değil, aynı zamanda nesne referanslarını da tutabilir. Bu yazıda, Python’da listelerin nasıl nesne özellikleri taşıyabileceğini ve bu özellikler ile nasıl çalışabileceğimizi inceleyeceğiz.

Listeler içerisindeki nesnelerin özelliklerine erişmek, yazılım geliştirme sürecinde oldukça yaygın bir ihtiyaçtır. Listeler, farklı türlerdeki nesneleri barındırabilir ve bu nesnelerin niteliklerini (özelliklerini) kullanarak karmaşık veri yapıları oluşturabiliriz. Python’daki nesneler, sınıflar tarafından tanımlanır ve her nesne kendi özelliklerine (attributes) sahiptir. Bu özelliklerle birlikte, listelerin avantajlarını daha etkin bir şekilde kullanabiliriz.

Nesnelerin İçinde Özelliklere Erişim

Python listesi içerisinde bulunan nesne özelliklerine erişmenin birkaç yolu vardır. Nestelenmiş (nested) döngüler kullanarak veya listelerin sağladığı intuityv ve dizin yöntemleriyle bu özellklere ulaşabiliriz. Python’da, listemizde yer alan nesnelerin belirli bir özelliğine en basit haliyle erişim şu şekilde sağlanır:

class Araba:
    def __init__(self, marka, model, yil):
        self.marka = marka
        self.model = model
        self.yil = yil

arabalar = [Araba('Toyota', 'Corolla', 2020), Araba('Ford', 'Focus', 2019)]

for araba in arabalar:
    print(araba.marka)

Yukarıdaki örnekte, ‘Araba’ isimli bir sınıf tanımlıyoruz. Bu sınıf, ‘marka’, ‘model’ ve ‘yıl’ gibi özelliklere sahiptir. Oluşturduğumuz araba nesnelerini bir liste içerisinde saklıyoruz. Daha sonra, nesnelerin ‘marka’ özelliklerine erişmek için bir döngü kullanarak bu bilgileri yazdırıyoruz. Bu basit örnek, listeler ve nesnelerle nasıl çalışacağımızı anlamamıza yardımcı olmaktadır.

Belirli Özelliklere Göre Filtreleme

Pek çok durumda, listelerimizin içerisindeki nesneleri belirli özelliklerine göre filtreleme ihtiyacı doğabilir. İstediğimiz özelliklere göre işlem gerçekleştirmek için listelerde yer alan “list comprehension” özelliğini kullanabiliriz. Aşağıda bir örnek gösterilmektedir:

yeni_arabalar = [araba for araba in arabalar if araba.yil > 2019]

for araba in yeni_arabalar:
    print(araba.marka)

Bu örnekte, ‘arabalar’ listesinde yer alan arabaların ‘yil’ özelliği 2019’dan büyük olanlarını alıyoruz. Bu tür bir filtreleme, özellikle büyük veri kümesiyle çalışırken son derece kullanışlıdır.

Özelliklere Göre Sıralama

Listelerdeki nesneleri belirli bir özelliğe göre sıralamak da oldukça yaygın bir işlemdir. Python’daki yerleşik “sorted()” fonksiyonu bu tür işlemler için oldukça etkilidir. Aşağıdaki kod örneği, arabaları yıl özelliğine göre sıralamayı göstermektedir:

sirali_arabalar = sorted(arabalar, key=lambda araba: araba.yil)

for araba in sirali_arabalar:
    print(araba.marka, araba.yil)

Burada ‘key’ parametresi sayesinde, sıralama işlemini ‘yil’ özelliği üzerinden gerçekleştiriyoruz. Bu tür bir sıralama, verilerinizi analiz ederken ya da sunarken sıklıkla ihtiyaç duyduğunuz bir adımdır.

Daha Karmaşık Yapılar ve İç içe Listeler

Python’da nesnelerin listelerin içinde kullanılmasının bir başka avantajı da iç içe listeler oluşturabilmektir. İç içe listeler, belirli bir nesne için birden fazla özelliği veya ilişkili unsuru saklamayı mümkün kılar. Örneğin, bir ‘Ogrenci’ sınıfımız olsun ve her öğrencinin ders notları olan bir listesi bulunsun:

class Ogrenci:
    def __init__(self, ad, soyad, notlar):
        self.ad = ad
        self.soyad = soyad
        self.notlar = notlar

ogrenciler = [Ogrenci('Ali', 'Yılmaz', [85, 90, 95]), Ogrenci('Ayşe', 'Kara', [78, 82, 88])]

Bu yapıda, her ‘Ogrenci’ nesnesinin notları yine bir liste şeklinde tutulmaktadır. Bu, öğrenciler için daha karmaşık veri yapıları oluşturup işlem yapmanızı sağlar. Örneğin, her öğrencinin notlarının ortalamasını hesaplamak isteyebilirsiniz:

for ogrenci in ogrenciler:
    ortalama = sum(ogrenci.notlar) / len(ogrenci.notlar)
    print(f'{ogrenci.ad} {ogrenci.soyad}: {ortalama:.2f}')

Bu noktada, her öğrencinin not listesine erişip ortalamasını kolaylıkla hesaplayabiliyoruz. İç içe listeler ve nesnelerle çalışmak, verilerinizin yönetimini büyük ölçüde kolaylaştırır.

Nesne Özelliklerinin Güncellenmesi

Listelerde yer alan nesne özelliklerini güncellemek bazen kaçınılmazdır. Python’daki nesne yöntemleri, nesnelerin özelliklerini güncellemenin basit bir yolunu sunar. Aşağıdaki örnekte, bir öğrencinin notlarını güncelleyerek mevcut notlarına yeni bir not eklemekteyiz:

ogrenciler[0].notlar.append(100)
print(ogrenciler[0].notlar)

Bu örnekte, Ali Yılmaz’ın notlarına yeni bir sınav puanı ekliyoruz. Python’un liste metotları sayesinde bu güncelleme oldukça kolay bir şekilde gerçekleştirilmektedir. Güncellemeler, dinamik veri yapıları oluşturmada ve profesyonel projelerde oldukça önemlidir.

Özelliklere Göre Nesne Oluşturma

Bazı durumlarda, belirli kriterlere uygun yeni nesneler oluşturmak isteyebilirsiniz. Aşağıdaki örnekte, belirli bir not ortalamasının üstünde olan öğrencilerden yeni bir liste oluşturuyoruz:

ust_ortalama_ogrenciler = [ogrenci for ogrenci in ogrenciler if sum(ogrenci.notlar) / len(ogrenci.notlar) > 90]

for ogrenci in ust_ortalama_ogrenciler:
    print(f'{ogrenci.ad} {ogrenci.soyad}')

Yukarıda, 90 ortalama puanın üzerinde olan Öğrencilerin adlarını yazdırıyoruz. Böylece, programatik olarak verilerinizle oynamak ve dinamik sonuçlar çıkarmak mümkün olmaktadır.

Sonuç

Python’da listeler ve nesne özellikleri ile etkileşim, yazılım geliştiricilerine büyük esneklik ve güç sağlar. Listeler aracılığıyla nesneleri saklamak, erişim ve yönetme işlemlerini kolaylaştırır. Bu yazıda, nesne özelliklerine erişim, filtreleme, sıralama, iç içe yapılar ve güncellemeler gibi temel konuları ele aldık. Bu bilgiler, gelişmiş veri yapıları oluşturmanızda ve Python’daki yetkinliğinizi artırmanızda faydalı olacaktır.

Hepinize eğlenceli ve öğretici Python projeleri dilerim! Unutmayın, denemeden öğrenmek en iyi yoldur. Kendi projelerinizde bu bilgileri kullanarak uygulamalar yaratmayı deneyin!

Scroll to Top