Resim

Python Listeler

Python Listeleri: Esnek ve Değiştirilebilir Koleksiyonlar 

Birden Fazla Öğeyi Tek Kutuya Koymak

Merhaba! Şimdiye kadar öğrendiğimiz int, str veya bool gibi temel veri türleri, tek bir değer saklayabilir. Peki ya birbiriyle ilişkili birden fazla değeri (örneğin bir alışveriş listesini, bir öğrenci listesini veya bir dizi skoru) tek bir değişken altında saklamak istersek?

İşte bu noktada Listeler (Lists) devreye girer. Liste, Python'ın en çok kullanılan veri yapısıdır; sıralı, değiştirilebilir (mutable) ve farklı veri türlerini bir arada tutabilen bir koleksiyondur.

Bu yazıda, listelerin nasıl tanımlandığını, listelere nasıl erişileceğini ve listeleri dinamik olarak nasıl değiştireceğimizi öğreneceğiz.

1. Liste Tanımlama ve Özellikleri

Listeler, öğelerin köşeli parantezler [] içine virgülle ayrılarak yazılmasıyla oluşturulur.

a. Temel Özellikler

  1. Sıralı (Ordered): Öğeler eklendikleri sırayı korur.

  2. Değiştirilebilir (Mutable): Bir liste oluşturulduktan sonra öğeleri değiştirilebilir, eklenebilir veya silinebilir.

  3. Farklı Tipler: Bir liste, aynı anda string, int, float ve hatta başka bir listeyi bile saklayabilir.

  • Örnek Tanımlama:

    sayilar = [10, 20, 30, 40]
    karisik_liste = ["Elma", 5, True, 3.14]
    print(karisik_liste)
    # Çıktı: ['Elma', 5, True, 3.14]

Kendiniz deneyebilirsiniz:


2. Liste Öğelerine Erişim (Indexing ve Slicing)

Listeler sıralı olduğu için, her öğeye index (dizin) numarası ile erişebiliriz. Index numaraları 0'dan başlar.

a. Indexing (Tekil Erişme)

  • Pozitif Indexing: Listenin başından itibaren sayar (0, 1, 2, ...).

  • Negatif Indexing: Listenin sonundan itibaren sayar (-1, -2, -3, ...).

meyveler = ["Elma", "Armut", "Kiraz", "Muz"]
print(meyveler[0]) # Çıktı: Elma (İlk öğe)
print(meyveler[-1]) # Çıktı: Muz (Son öğe)

b. Slicing (Dilimleme)

Listenin bir bölümünü (bir dilimini) almak için : operatörünü kullanırız. Bitiş indexi dahil değildir.

  • Kural: liste[başlangıç_indexi : bitiş_indexi : atlama_miktarı]

sayilar = [10, 20, 30, 40, 50, 60]
print(sayilar[1:4]) # Çıktı: [20, 30, 40]
print(sayilar[::2]) # Çıktı: [10, 30, 50] (Tüm listeyi 2'şer atlayarak al)

Kendiniz deneyebilirsiniz:


3. Listeleri Değiştirme (Ekleme, Silme ve Güncelleme)

Listelerin değiştirilebilir (mutable) olması, üzerinde kolayca işlem yapmamızı sağlar.

a. Öğeye Göre Güncelleme

Bir index'i kullanarak o konumdaki öğenin değerini değiştirebiliriz.

renkler = ["Kırmızı", "Mavi", "Yeşil"]
renkler[1] = "Sarı" # Mavi yerine Sarı geldi
print(renkler)
# Çıktı: ['Kırmızı', 'Sarı', 'Yeşil']

b. Öğeler Ekleme Metotları

  • append(): Listenin sonuna tek bir öğe ekler.

    liste.append("Yeni Öğe")
  • insert(index, öğe): Belirtilen index konumuna öğe ekler.

    liste.insert(1, "Araya Girdi")
  • extend(): Bir listeye başka bir yinelenebilir yapıyı (başka bir listeyi, tuple'ı vb.) ekler.

    liste.extend([4, 5])

c. Öğeler Silme Metotları

  • remove(değer): Listenin içindeki belirtilen değere sahip ilk öğeyi siler.

    liste.remove("Elma")
  • pop(index): Belirtilen index konumundaki öğeyi siler ve sildiği öğeyi geri döndürür. Index belirtilmezse son öğeyi siler.

    silinen = liste.pop(2)
  • del anahtar kelimesi: Belirtilen index konumundaki öğeyi siler veya listenin tamamını siler.

    del liste[0] # İlk öğeyi sil
    del liste # Listenin tamamını sil (değişkeni yok eder)
  • clear(): Listenin içindeki tüm öğeleri siler, ancak listeyi (boş bir liste olarak) bellekte tutar.

    liste.clear()
    print(liste)
    # Çıktı: []

Kendiniz deneyebilirsiniz:


4. Diğer Faydalı Metotlar

  • len(): Listenin içindeki öğe sayısını döndürür.

    uzunluk = len(meyveler)
  • sort(reverse=False): Listeyi alfabetik veya sayısal olarak sıralar (orijinal listeyi değiştirir).

    • reverse=True parametresi kullanılarak büyükten küçüğe veya Z'den A'ya sıralama yapılabilir.

    sayilar = [3, 1, 2]
    sayilar.sort() # [1, 2, 3] (Küçükten büyüğe)
    sayilar.sort(reverse=True) # [3, 2, 1] (Büyükten küçüğe)
  • copy(): Listenin sığ bir kopyasını (shallow copy) oluşturur. Bu, orijinal listeden bağımsız yeni bir liste elde etmenizi sağlar.

    orijinal = [1, 2, 3]
    kopya = orijinal.copy()
    kopya.append(4)
    print(orijinal) # Çıktı: [1, 2, 3] (Değişmedi)
    print(kopya) # Çıktı: [1, 2, 3, 4]
  • reverse(): Listenin öğe sırasını tersine çevirir (orijinal listeyi değiştirir).

    sayilar.reverse()
  • count(değer): Listede belirtilen değerin kaç kez geçtiğini sayar.

    tekrar = liste.count(5)
Kendiniz deneyebilirsiniz:


Python Liste Yöntemleri (Metotları)

Listeler, değiştirilebilir (mutable) veri yapılarıdır ve üzerlerinde doğrudan işlem yapmayı sağlayan yerleşik metotlara sahiptir. Aşağıda, bir Python Listesi nesnesi üzerinde kullanabileceğiniz tüm temel yöntemler yer almaktadır:

  1. append(öğe): Listenin en sonuna tek bir öğe ekler.

  2. extend(yinelenebilir): Listenin sonuna başka bir yinelenebilir yapının (liste, tuple, küme vb.) tüm öğelerini tek tek ekler.

  3. insert(index, öğe): Listenin belirtilen index konumuna yeni bir öğe ekler.

  4. remove(değer): Listenin içindeki belirtilen değere sahip olan ilk öğeyi bulur ve siler.

  5. pop([index]): Belirtilen index konumundaki öğeyi siler ve sildiği bu öğeyi geri döndürür. Eğer index belirtilmezse, listenin son öğesini siler ve döndürür.

  6. clear(): Listenin içindeki tüm öğeleri siler, ancak listenin kendisini boş bir liste olarak korur.

  7. index(değer, [başlangıç], [bitiş]): Listenin içinde belirtilen değerin ilk bulunduğu konumun (index numarasının) döndürür.

  8. count(değer): Listenin içinde belirtilen değerin kaç kez tekrar ettiğini sayar ve döndürür.

  9. sort(key=None, reverse=False): Listeyi doğrudan yerinde (in-place) sıralar. reverse=True parametresi kullanılarak büyükten küçüğe sıralama yapılabilir.

  10. reverse(): Listenin öğelerinin sırasını tersine çevirir (orijinal listeyi değiştirir).

  11. copy(): Orijinal listenin sığ (shallow) bir kopyasını oluşturur ve bu yeni listeyi döndürür. Bu, orijinal listeden bağımsız bir kopya elde etmeyi sağlar.

Python Liste Kapsamları (List Comprehensions)

Daha Kısa, Daha Hızlı, Daha Pythonik Kod

Liste Kapsamları (List Comprehensions), bu yaygın görevi tek bir satırda, okunaklı ve hızlı bir şekilde yapmamızı sağlayan kısa bir söz dizimidir. Birçok Python profesyoneli, temiz kod yazmanın anahtarı olarak Liste Kapsamlarını görür.

Bu yazıda, geleneksel döngülerden nasıl Liste Kapsamlarına geçileceğini ve koşullu ifadelerle (if) bu yapının gücünü nasıl artıracağımızı öğreneceğiz.


1. Temel Yapı: For Döngüsünden Kapsama Geçiş

Liste Kapsamı, yeni bir liste oluştururken döngü, koşul ve ifadeyi köşeli parantezler ([]) içine alarak birleştirir.

Geleneksel Yöntem:

Bir listedeki her sayının karesini alıp yeni bir listeye eklemek için en az 4 satır kod gerekir:

eski_sayilar = [1, 2, 3, 4]
yeni_sayilar = []
for sayi in eski_sayilar:
    yeni_sayilar.append(sayi ** 2)
# yeni_sayilar: [1, 4, 9, 16]

Liste Kapsamı Yöntemi:

Aynı işlemi tek bir satırda yapabiliriz:

eski_sayilar = [1, 2, 3, 4]
# [İFADE for ÖĞE in KOLEKSİYON]
yeni_sayilar = [sayi ** 2 for sayi in eski_sayilar]
print(yeni_sayilar)
# Çıktı: [1, 4, 9, 16]

Temel Söz Dizimi (Okuma Sırası):

  • Öğeyi al (sayi).

  • Bu öğe için döngü kur (for sayi in eski_sayilar).

  • Öğeye işlemi uygula (sayi ** 2).

Kendiniz deneyebilirsiniz:


2. Koşul Ekleme: Filtreleme Gücü (if)

Liste Kapsamları, öğeleri yeni listeye eklemeden önce filtrelemek için bir if koşulu eklemenize olanak tanır.

  • Kural: if koşulu, for döngüsünün hemen arkasına konulur.

Örnek: Sadece Çift Sayıları Filtreleme

Geleneksel olarak, önce kontrol etmemiz gerekirdi:

sayilar = [1, 2, 3, 4, 5, 6]
cift_sayilar = []
for sayi in sayilar:
    if sayi % 2 == 0:
        cift_sayilar.append(sayi)
# cift_sayilar: [2, 4, 6]

Liste Kapsamı ile Filtreleme:

sayilar = [1, 2, 3, 4, 5, 6]
# [İFADE for ÖĞE in KOLEKSİYON if KOŞUL]
cift_sayilar = [sayi for sayi in sayilar if sayi % 2 == 0]
print(cift_sayilar)
# Çıktı: [2, 4, 6]

Kendiniz deneyebilirsiniz:


3. Koşul ve İfade Ekleme: if-else Kullanımı

Bazen, her öğeye bir işlem uygulamak, ancak koşula bağlı olarak farklı bir işlem uygulamak isteriz. Bu durumda, if-else ifadesini kullanırız.

  • Kural: if-else yapısı, döngüden önce, yani ifadenin olduğu kısma taşınır.

Örnek: Tek ise "Tek", Çift ise "Çift" Yazma

sayilar = [1, 2, 3, 4]
# [DEĞER_1 if KOŞUL else DEĞER_2 for ÖĞE in KOLEKSİYON]
sonuc_liste = [
    "Çift" if sayi % 2 == 0 else "Tek"
    for sayi in sayilar
]
print(sonuc_liste)
# Çıktı: ['Tek', 'Çift', 'Tek', 'Çift']

Kendiniz deneyebilirsiniz:


4. Neden Liste Kapsamları Kullanmalıyız?

  1. Daha Okunabilir: Birçok Python geliştiricisi için, basit bir döngü ve ekleme işleminden daha anlaşılırdır.

  2. Daha Kısa: Tek satırda karmaşık mantıklar kurulabilir.

  3. Daha Hızlı: Teknik olarak, Python yorumlayıcısı Liste Kapsamlarını optimize edilmiş bir şekilde çalıştırır, bu da onları geleneksel döngülere göre biraz daha hızlı yapar.


Dinamik Veri Yönetimi

Listeler, Python'daki dinamik ve esnek yapısıyla her seviyeden programcının en sık başvurduğu veri yapısıdır. Listelerin sıralı ve değiştirilebilir yapısını, copy(), sort() ve clear() gibi güçlü metotlarla kullanarak karmaşık veri setlerini kolayca yönetebilirsiniz.

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?