Listeler ile Birden Fazla Veriyi Yönetme

Önceki derste karar yapılarını ve döngüleri öğrenerek programına tekrar eden işleri ve koşullu davranışları kazandırmıştın. Bu derste ise tek bir kutuda birden fazla veriyi bir arada tutmayı sağlayan liste (list) yapısını öğreneceksin; bir sonraki derste ise fonksiyonlarla bu bilgileri bir araya getirip kendi araçlarını yazmayı göreceksin.

Bu derste ne yapacağız?

Bu dersin hedefi, Python'da liste adı verilen veri yapısını tanımak; listeye eleman ekleyip çıkarmayı ve for döngüsüyle bir listenin tüm elemanları arasında gezinmeyi uygulamalı olarak öğrenmektir. Derse başlamadan önce değişkenler, temel veri tipleri (metin, sayı), if ile karar yapıları ve for döngüsü konularını bilmen yeterlidir. Bilgisayarında Python'ın kurulu olması ve kod yazabileceğin bir düzenleyicinin (örneğin IDLE veya herhangi bir metin düzenleyici) açık olması gerekir. Arayüz görünümü kullandığın Python sürümüne göre küçük farklılıklar gösterebilir; bu ders komut satırından çalışan sade Python koduna odaklanır.

Kavram

Şimdiye kadar her bilgiyi ayrı bir değişkende sakladın: isim, yas, sehir gibi. Peki 5 öğrencinin adını saklaman gerekseydi ne yapardın? Beş ayrı değişken mi açardın: ogrenci1, ogrenci2, ogrenci3...? Bu hem yorucu hem de pratik değil. İşte tam bu noktada liste devreye girer.

Bir listeyi, üzerinde birden çok göz bulunan bir alışveriş çantası ya da market listesi gibi düşünebilirsin. Tek bir kâğıda "ekmek, süt, yumurta, peynir" yazarsın; bu tek kâğıt (liste), içinde dört ayrı ürünü barındırır. İstediğin zaman listeye yeni bir ürün eklersin, istediğin zaman bir ürünü listeden çıkarırsın, istersen listedeki her ürünü tek tek okursun. Python'da liste de tam olarak böyle çalışır: köşeli parantez [ ] içine, virgülle ayrılmış değerler yazarak oluşturulur.

Listelerin bir diğer önemli özelliği sıralı olmalarıdır; yani her elemanın bir "sıra numarası" (indeks) vardır ve bu numaralandırma 0'dan başlar. Listenin ilk elemanına 0, ikinci elemanına 1 diyerek ulaşırsın. Bu, bir apartmanın kat numaralarına benzer ama zemin kat "0" kabul edilir diyebilirsin.

Adım adım uygulama

Aşağıdaki adımları kendi Python dosyanda (örneğin listeler.py adıyla kaydettiğin bir dosyada) sırayla dene. Her kod bloğunu çalıştırdıktan sonra çıktısını gözlemle.

  1. Önce boş bir metin dosyası oluşturup listeler.py adıyla kaydet. Kod düzenleyicinde Dosya menüsünden Kaydet (Save) seçeneğini kullanabilirsin.
  2. Basit bir liste oluşturalım. Aşağıdaki kodu yaz:
    meyveler = ["elma", "muz", "çilek"]
    print(meyveler)
    Burada meyveler adında bir liste oluşturduk; köşeli parantez içindeki her metin, listenin bir elemanı. print(meyveler) satırı listenin tamamını ekrana yazdırır.
  3. Listenin belirli bir elemanına indeks numarasıyla ulaşalım:
    print(meyveler[0])
    print(meyveler[1])
    print(meyveler[2])
    meyveler[0] listenin ilk elemanı olan "elma"yı verir, çünkü sayma 0'dan başlar. meyveler[2] ise üçüncü elemanı, yani "çilek"i verir.
  4. Listeye yeni eleman ekleyelim. Bunun için append adlı bir yöntem (method) kullanılır:
    meyveler.append("portakal")
    print(meyveler)
    append, listenin en sonuna yeni bir eleman ekler. Kodu çalıştırdığında listenin artık dört elemanlı olduğunu göreceksin.
  5. Listeden bir eleman çıkaralım. Bunun için remove yöntemini kullanabiliriz:
    meyveler.remove("muz")
    print(meyveler)
    remove("muz") satırı, listede "muz" değerini bulup siler. Değer listede yoksa Python hata verir; bu yüzden silmeden önce elemanın listede olduğundan emin olmak gerekir.
  6. Listenin kaç elemanı olduğunu öğrenmek için len fonksiyonunu kullan:
    print(len(meyveler))
    len, bir listenin eleman sayısını verir; bu, özellikle döngülerle çalışırken çok işine yarayacak.
  7. Şimdi listenin tüm elemanları arasında for döngüsüyle gezinelim:
    for meyve in meyveler:
        print(meyve)
    Bu döngü, listedeki her elemanı sırayla meyve adlı geçici bir değişkene atar ve ekrana yazdırır. Listenin kaç elemanı varsa döngü o kadar kez çalışır; indeks numarasıyla uğraşmana gerek kalmaz.
  8. Döngü içinde koşul kullanarak daha anlamlı bir örnek yapalım:
    notlar = [55, 90, 42, 78, 61]
    
    for not_deger in notlar:
        if not_deger >= 50:
            print(not_deger, "- geçti")
        else:
            print(not_deger, "- kaldı")
    Burada notlar listesindeki her sayı için, 50 ve üzeri ise "geçti", değilse "kaldı" yazdırıyoruz. Bu, listeler ile karar yapılarının birlikte nasıl kullanıldığını gösteren güzel bir örnektir.
  9. Son olarak, boş bir listeden başlayıp döngü içinde eleman ekleyerek listeyi doldurmayı deneyelim:
    sayilar = []
    
    for i in range(1, 6):
        sayilar.append(i * i)
    
    print(sayilar)
    sayilar = [] boş bir liste oluşturur. range(1, 6) 1'den 5'e kadar sayılar üretir. Döngü her adımda o sayının karesini hesaplayıp append ile listeye ekler. Sonuçta ekranda [1, 4, 9, 16, 25] görürsün.
  10. Dosyayı kaydedip çalıştır. Kod düzenleyicine göre Çalıştır (Run) düğmesine tıklayabilir veya komut satırından şu şekilde çalıştırabilirsin:
    python listeler.py

Sık karşılaşılan sorunlar

Hata / SorunOlası NedenÇözüm
IndexError: list index out of rangeListede olmayan bir indekse erişmeye çalışıyorsun (örneğin 3 elemanlı listede indeks 5'i istemek)Listenin uzunluğunu len() ile kontrol et; indeksin her zaman 0'dan (uzunluk-1)'e kadar olduğunu unutma
ValueError: list.remove(x): x not in listremove ile listede olmayan bir değeri silmeye çalışıyorsunSilmeden önce değerin listede olup olmadığını if deger in liste: ile kontrol et
Liste yerine tek elemanlı metin göründüKöşeli parantez unutulmuş, örneğin meyveler = "elma" yazılmışListe oluştururken mutlaka köşeli parantez [ ] kullan
Döngüde elemanlar beklenmedik sıradaAslında listeler eklenme sırasını korur; genelde beklenti yanlışListeyi print ile döngüden önce kontrol ederek eleman sırasını doğrula
append yerine yeni bir liste oluştu sanılıyorappend listeyi değiştirir, yeni bir liste döndürmez; meyveler = meyveler.append(...) gibi bir atama yanlıştırappend'i tek başına bir satırda çağır, atama yapma; listeyi görmek için ayrı satırda print kullan

Mini görev

Kendi başına küçük bir program yaz: ders_notlarim adında boş bir liste oluştur. Ardından beş farklı ders adını (örneğin "Matematik", "Fizik", "Türkçe" gibi) append ile tek tek listeye ekle. Sonra bir for döngüsü ile listedeki her dersi "Ders: ..." şeklinde ekrana yazdır. Son olarak len() fonksiyonunu kullanarak kaç ders eklediğini ayrı bir satırda yazdır.

Kontrol listesi:

  • Liste köşeli parantez [ ] ile boş olarak başlatıldı mı?
  • append yöntemiyle en az beş ders eklendi mi?
  • for döngüsü ile tüm dersler tek tek ekrana yazdırıldı mı?
  • Yazdırma metninde her satırda "Ders: " ön eki kullanıldı mı?
  • len() ile toplam ders sayısı doğru şekilde yazdırıldı mı?
  • Program hatasız çalıştı mı?

Kendini sına

1) Python'da bir liste oluşturmak için hangi parantez türü kullanılır?

2) Bir listenin ilk elemanına hangi indeks numarasıyla erişilir?

3) Bir listenin sonuna yeni eleman eklemek için hangi yöntem kullanılır?

4) Bir listenin eleman sayısını öğrenmek için hangi fonksiyon kullanılır?

5) Aşağıdaki kodun çıktısı ne olur?
sayilar = [10, 20, 30]
for s in sayilar:
    print(s + 1)

Cevaplar

1) Köşeli parantez [ ] kullanılır.

2) İlk elemana 0 indeksiyle erişilir, çünkü listelerde numaralandırma 0'dan başlar.

3) append yöntemi kullanılır; listenin sonuna yeni eleman ekler.

4) len() fonksiyonu kullanılır; listenin toplam eleman sayısını verir.

5) Döngü sırasıyla 11, 21 ve 31 değerlerini ekrana yazdırır çünkü her eleman 1 artırılıp yazdırılmaktadır.

Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol