? Okuma Hesaplanıyor... Okuma: %0
0

Birden Fazla Veriyi Bir Arada Tutmak (Python 5.Ders)

Resim
BÖLÜM 5 — Çokluğun Doğuşu: Birden Fazla Veriyi Bir Arada Tutmak

Bu bölümün temel sorusu:
Şimdiye kadar her değişken tek bir değer tuttu (isim = "Ahmet" gibi). Peki ya 100 öğrencinin adını tutman gerekiyorsa? 100 tane ayrı değişken mi tanımlayacaksın?

🎯 Bölümün Öğrenme Hedefleri
Bu bölümün sonunda öğrenci;
  • neden tek bir değişkenin bazen yetersiz kaldığını,
  • listelerin (list) aslında ne olduğunu ve nasıl indekslendiğini,
  • liste elemanlarına erişme, ekleme, çıkarma mantığının hangi problemi çözdüğünü,
  • "for" döngüsü ile listelerin neden doğal bir ikili oluşturduğunu,
  • ikinci dersteki "kutu değil etiket" fikrinin listelerde neden çok daha kritik hâle geldiğini,
  • öğrendiği koşul + döngü + liste bilgisini birleştirerek küçük bir program yazabildiğini
açıklayabilecek ve gösterebilecek duruma gelecektir.

📌 Geçen Derste Neler Öğrendik?
Dördüncü derste döngülerle ("for", "while") aynı işlemi tekrar tekrar yapmayı öğrendik. Ama döngüde hep sabit bir aralığı ("range(1, 6)" gibi) gezdik, henüz kendi verilerimizden oluşan bir kümeyi gezmedik. Bu derste önce o kümeyi (listeyi) oluşturmayı, sonra döngüyle birlikte kullanmayı öğreneceğiz.


5.1. Her Şey Bir Sorunla Başladı
Diyelim ki bir sınıftaki 5 öğrencinin adını tutman gerekiyor. İkinci dersteki bilgimizle şöyle yapardık:

Kod:
ogrenci1 = "Ahmet"
ogrenci2 = "Ayşe"
ogrenci3 = "Mehmet"
ogrenci4 = "Zeynep"
ogrenci5 = "Elif"

Bu 5 öğrenci için katlanılabilir belki ama birkaç ciddi sorun var:
  • Ya öğrenci sayısı 5 değil de 500 ise?
  • Ya öğrenci sayısı programın çalışması sırasında değişiyorsa (biri kayıt oluyor, biri ayrılıyorsa)?
  • Bu 5 ismi tek tek "print()" ile mi yazdıracaksın, yoksa dördüncü derste öğrendiğimiz döngüyle mi? Döngüyle yazdırmak istesen bile, "ogrenci1, ogrenci2, ..." gibi ayrı isimler üzerinde döngü kurmak mümkün değil. Çünkü döngü, sırayla gezilebilecek tek bir küme ister, beş ayrı bağımsız isim değil.
İşte tam olarak bu üç sorun (değişken sayısı bilinmiyor, sayı değişebilir, döngüyle gezilmesi gerekiyor)  listeler  kavramını doğurur.


5.2. Büyük Fikir: Birden Fazla Değeri Tek Bir İsme Bağlamak

Kaynak kod


Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet", "Zeynep", "Elif"]
print(ogrenciler)

Çıktı


['Ahmet', 'Ayşe', 'Mehmet', 'Zeynep', 'Elif']

Burada tek bir değişken (ogrenciler), beş farklı değeri sırayla tutuyor. Köşeli parantez "[ ]" ve virgüllerle ayrılmış değerler, Python'a "bu bir liste" der.

BİLGİ
🤔 Neden Köşeli Parantez?
Bunu şimdilik bir sözleşme gibi düşünebilirsin. Python'da "[ ]" "sıralı bir küme" anlamına gelir. İleride göreceğimiz "{ }" (sözlük/küme) ve "( )" (demet) gibi farklı parantez türleri de farklı veri yapılarını temsil eder.

5.3. Listedeki Bir Elemana Nasıl Ulaşılır? (İndeksleme)
Listedeki her eleman, bir  konum numarasına (index)  sahiptir. Ama dikkat, Python'da sayma  0'dan  başlar, 1'den değil.
Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet", "Zeynep", "Elif"]
print(ogrenciler[0])   # Ahmet  (ilk eleman)
print(ogrenciler[1])   # Ayşe   (ikinci eleman)
print(ogrenciler[4])   # Elif   (beşinci ve son eleman)

BİLGİ
🤔 Neden 0'dan Başlıyor?
Bu, yeni başlayanların en çok şaşırdığı noktalardan biridir. Kısa cevap: index, aslında "kaçıncı eleman" değil,  "baştan itibaren kaç adım uzakta"  sorusuna cevap verir. İlk eleman baştan 0 adım uzaktadır (zaten oradadır), bu yüzden index'i 0'dır. Bu mantık, C dilinden miras kalmış ve birçok modern dilde (Python dahil) standart hâle gelmiştir.
DİKKAT
⚠️ Dikkat — Sona Taşarsan Ne Olur?
Kod:
print(ogrenciler[5])   # HATA! IndexError 5. index yok, en son index 4
5 öğrenci varsa geçerli index'ler 0, 1, 2, 3, 4'tür — 5 diye bir index yoktur.

Negatif İndeksleme: Python'un pratik bir özelliği, sona doğru saymana da izin verir:
Kod:
print(ogrenciler[-1])   # Elif  (sondan 1. eleman)
print(ogrenciler[-2])   # Zeynep (sondan 2. eleman)

5.4. Listeye Eleman Ekleme ve Çıkarma
Listeler, tanımlandıktan sonra bile değiştirilebilir (buna "mutable" denir. Bu terime ileri de tekrar döneceğiz):

Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet"]
ogrenciler.append("Zeynep")     # sona ekler
print(ogrenciler)                # ['Ahmet', 'Ayşe', 'Mehmet', 'Zeynep']
ogrenciler.remove("Ayşe")        # belirtilen değeri çıkarır
print(ogrenciler)                # ['Ahmet', 'Mehmet', 'Zeynep']
ogrenciler.pop()                 # son elemanı çıkarır ve döndürür
print(ogrenciler)                # ['Ahmet', 'Mehmet']
BİLGİ
İkinci dersteki "değişken bir kutu değil, etiket" fikrini hatırla. Listeler bu fikrin önemini çok daha net gösterir:
Kod:
liste_a = ["elma", "armut"]
liste_b = liste_a          # b, a ile AYNI listeye işaret ediyor -- kopyalamıyor!
liste_b.append("muz")
print(liste_a)   # ['elma', 'armut', 'muz']  -- a da değişti!

Burada ‘liste_b = liste_a’ satırı yeni bir liste oluşturmaz sadece aynı listeye ikinci bir etiket yapıştırır. ‘liste_b’ üzerinden yaptığın değişiklik, ‘liste_a’ da da görünür, çünkü ikisi de hafızada aynı yere işaret ediyor. Bu, ikinci derste "kutu değil, etiket" derken bahsettiğimiz sınırın tam olarak neden önemli olduğunu gösteren ilk somut örnektir.


5.5. Listenin Uzunluğunu Öğrenmek: “len()”
Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet"]
print(len(ogrenciler))   # 3
“len()”, birinci derste gördüğümüz “print()” gibi hazır bir fonksiyondur bir listenin (ya da bir string'in) kaç elemandan oluştuğunu söyler.


5.6. “for” Döngüsü ile Listeler: Doğal Bir İkili
Dördüncü derste “for” döngüsünün sadece sayılarla değil, "gezilebilir" her şeyle çalıştığını öğrenmiştik. Liste, tam olarak böyle bir yapıdır:

Kaynak kod


Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet"]
for ogrenci in ogrenciler:
    print(ogrenci)

Çıktı


Ahmet
Ayşe
Mehmet

DERSTE
🤔 Neden Bu Kadar Doğal Hissettiriyor?
Çünkü “for” döngüsünün tasarım amacı zaten tam olarak buydu: "şu kümedeki her eleman için şunu yap." dördüncü derste bunu “range()” ile sayılar üzerinde denemiştik; şimdi aynı mantığı kendi verimiz (liste) üzerinde kullanıyoruz. Eğer hem elemanı hem de index'ini istiyorsan “enumerate()” fonksiyonunu kullanabilirsin:

Kaynak kod


Kod:
for index, ogrenci in enumerate(ogrenciler):
    print(index, "-", ogrenci)

Çıktı


0 - Ahmet
1 - Ayşe
2 - Mehmet


5.7. Şimdiye Kadar Öğrendiğimiz Her Şeyi Birleştirelim: Mini Proje
Üçüncü derste koşulları, dördüncü derste döngüleri, bu bölümde listeleri öğrendik. Şimdi bunları birleştiren küçük bir program yazalım. Bir not listesine bakıp kimlerin geçtiğini, kimlerin kaldığını bulan bir program:

Kaynak kod


Kod:
ogrenciler = ["Ahmet", "Ayşe", "Mehmet", "Zeynep"]
notlar = [45, 78, 60, 30]

for i in range(len(ogrenciler)):
    isim = ogrenciler[i]
    not_degeri = notlar[i]

    if not_degeri >= 50:
        print(isim, "geçti. Notu:", not_degeri)
    else:
        print(isim, "kaldı. Notu:", not_degeri)

Çıktı


Ahmet kaldı. Notu: 45
Ayşe geçti. Notu: 78
Mehmet geçti. Notu: 60
Zeynep kaldı. Notu: 30


DERSTE
💡 Burada Ne Oldu, Adım Adım:
  1. İki ayrı liste tanımladık; biri isimler, biri notlar. “ogrenciler[0]” ile “notlar[0]” aynı öğrenciye ait (Ahmet - 45).
  2. “range(len(ogrenciler))” ile 0'dan liste uzunluğuna kadar bir index dizisi oluşturduk (Dördüncü dersteki “range()” bilgisi).
  3. Her index için hem ismi hem notu aynı index'ten çektik.
  4. Üçüncü dersteki “if/else” ile notu değerlendirip farklı mesaj yazdırdık.

Bu, dört derste öğrendiğin her şeyin (değişkenler, koşullar, döngüler, listeler) ilk kez birlikte çalıştığı andır.

⚠️ Kavram Yanılgıları
❌ Yanlış düşünce: "Bir listeyi başka bir değişkene atarsam ("liste_b = liste_a"), iki ayrı bağımsız liste elde ederim."
✅ Daha doğru düşünce: Bu satır yeni bir liste oluşturmaz, aynı listeye ikinci bir etiket yapıştırır. Gerçek bir kopya istiyorsan "liste_b = liste_a.copy()" kullanman gerekir (bu konuya ileride tekrar döneceğiz).

❌ Yanlış düşünce: "Listede ilk eleman 1. index'tedir, çünkü 'ilk' demek 1 demektir."
✅ Daha doğru düşünce: Python'da index, "kaçıncı eleman" değil "baştan kaç adım uzakta" sorusuna cevap verir. İlk eleman baştan 0 adım uzaktadır, bu yüzden index 0'dır.


👨‍🏫 Öğretmen Notu
Listeler anlatılırken doğrudan sözdizimine ("[ ]", ".append()" vb.) geçmek yerine, önce "neden tek tek değişken tanımlamak yetersiz kalıyor" sorusunun somutlaştırılması önemlidir. Önerilen sıra:
  1. Elle tanımlanmış 5 ayrı değişkenin (`ogrenci1, ogrenci2...`) neden döngüyle kullanılamadığı gösterilir — bu, Bölüm 4'teki döngü bilgisiyle doğrudan bağlantı kurar.
  2. Liste tanıtılır, index kavramı 0'dan başlamasının nedeniyle birlikte verilir.
  3. ".append()", ".remove()" gibi metotlarla listenin değiştirilebilir olduğu gösterilir.
  4. "Kutu değil etiket" fikri somut bir örnekle ("liste_b = liste_a") yeniden hatırlatılır bu, öğrencinin ileride referans/kopya karmaşasına düşmesini önler.
  5. Ders sonunda mutlaka önceki derslerin bilgisini birleştiren bir mini proje yapılmalı bu, öğrencinin "parça parça bilgiyi" bir bütün olarak görmesini sağlar.


✍️ Uygulama Soruları ve Cevapları
Soru 1: 'meyveler = ["elma", "armut", "muz", "çilek"]' listesinde 3. index'teki elemanı yazdır.

Soru 2: Birinci sorudaki listeye "kiraz" ekleyip, ardından "armut" u listeden çıkar.

Soru 3: Aşağıdaki kod çalıştırıldığında `liste_a` neden değişir?
Kod:
liste_a = [1, 2, 3]
liste_b = liste_a
liste_b.append(4)
print(liste_a)

Soru 4: "sayilar = [4, 8, 15, 16, 23, 42]" listesindeki tüm elemanları "for" döngüsüyle tek tek yazdır.

Soru 5: Bir listedeki sayılardan sadece çift olanları yazdıran kodu, üçüncü dersteki "if" ve bu bölümdeki "for" bilgini birleştirerek yaz.


📌 Şu Ana Kadar Neler Öğrendik?
  • Tek bir değişkenin neden bazen yetersiz kaldığı ve listelerin bu sorunu nasıl çözdüğü
  • Listelerin "[ ]" ile tanımlandığı ve index'lerin 0'dan başladığı
  • ".append()", ".remove()", ".pop()" ile listeleri değiştirme
  • "len()" ile listenin uzunluğunu öğrenme
  • "for" döngüsünün listelerle nasıl doğal bir şekilde çalıştığı, "enumerate()" ile index'e de erişebildiğimiz
  • Bir listeyi başka bir değişkene atamanın kopya değil, aynı veriye ikinci bir etiket bağlamak olduğu
  • Değişkenler, koşullar, döngüler ve listelerin birlikte nasıl gerçek bir program oluşturduğu (mini proje)


📌 Bu Bölümden Çıkarılacak En Önemli Sonuç
Listeler bir formülle değil, "tek tek değişken tanımlamanın ölçeklenmemesi" sorunundan doğdu. Bir listeyi tek bir isme bağlayıp, döngüyle her elemanına erişebilmek, ikinci dersteki değişken fikri ile dördüncü dersteki döngü fikrinin birleştiği noktadır. Bu bölüm aynı zamanda önemli bir eşiği gösteriyor: artık öğrendiğin parçalar (değişken, koşul, döngü, liste) birbirinden bağımsız değil, birlikte çalışan bir bütünün parçaları.


📝 Bölümün Kısa Özeti
Listeler, birden fazla değeri tek bir değişkende sırayla saklamamızı sağlar ve "[ ]" ile tanımlanır. Her elemana, 0'dan başlayan bir index ile erişilir. Listeler tanımlandıktan sonra da değiştirilebilir ".append()" ile eklenir, ".remove()" ya da ".pop()" ile çıkarılır. "for" döngüsü, listelerle doğal bir uyum içinde çalışır ve her elemanı sırayla ele alır. Bir listeyi başka bir değişkene atamak, listeyi kopyalamaz aynı veriye ikinci bir etiket bağlar. Bu bölümde ayrıca koşul, döngü ve liste bilgisini birleştiren ilk gerçek mini projemizi yazdık.

✍️ Uygulama Cevapları
Cevap 1: 'meyveler = ["elma", "armut", "muz", "çilek"]' listesinde 3. index'teki elemanı yazdır.
Kod:
meyveler = ["elma", "armut", "muz", "çilek"]
print(meyveler[3])
# Çıktı: çilek

Cevap 2:
Kod:
meyveler.append("kiraz")
meyveler.remove("armut")
print(meyveler)
# Çıktı: ['elma', 'muz', 'çilek', 'kiraz']

Cevap 3: Çünkü "liste_b = liste_a" yeni bir liste oluşturmaz, aynı listeye ikinci bir etiket bağlar. "liste_b" üzerinden yapılan ".append()" işlemi, aynı veriye işaret eden "liste_a" da da görünür.

Cevap 4:
Kod:
sayilar = [4, 8, 15, 16, 23, 42]
for sayi in sayilar:
    print(sayi)

Cevap 5:
Kod:
sayilar = [4, 8, 15, 16, 23, 42]
for sayi in sayilar:
    if sayi % 2 == 0:
        print(sayi)
# Çıktı: 4, 8, 16, 42

Konuyu Dinle
Hazır. Konuyu dinlemek için Oynat'a basın.

Yazarımız Hasan hakkında: Adım Hasan, ama bir dönem MyBB kullananlar beni Yondaime nicki ile tanırdı. 2009 da başladı web maceram, MyBB, Wordpress, Matematik, Adalet, Bilgisayar Programcılığı, derken şimdide burada bir şeyler yapmaya çalışıyorum :)

user avatar


 

Yazıya herhangi bir yorum yapılmadı

[-]
Hızlı Cevap
Güvenlik Kodu:
Lütfen, resmin üzerindeki harf ve rakamlardan oluşan Güvenlik Kodunu, aşağıdaki metin kutusuna giriniz.
Güvenlik Kodu:
(Büyük/Küçük harf duyarsız)


 
Reklam
Reklam


Kategoriler


Yasal Uyarı
Bu internet sitesi içeriğinde yer alan tüm yazılar Gidenler.Me’ye ait olup, 5846 sayılı Fikir ve Sanat Eserleri Kanunu ve 5237 sayılı Türk Ceza Kanunu kapsamında korunmaktadır. Bu hakları ihlal eden kişiler, 5846 sayılı Fikir ve Sanat eserleri Kanunu ve 5237 sayılı Türk Ceza Kanununda yer alan hukuki ve cezai yaptırımlara tabi olurlar. Gidenler.Me, ilgili yasal işlem başlatma hakkına sahiptir. Gidenler.Me Blog'da yer alan tüm yazılar/makaleler bilgi edinme amacı ile sınırlı olup Gidenler.Me'den izin alınmaksızın değiştirilemez, çoğaltılamaz, yayımlanamaz, dağıtılamaz, umuma iletilemez, başka bir lisana çevrilemez.


Türkçe Çeviri: MyBB, Yazılım: MyBB, © 2002-2026 MyBB Group.
GM v3.0.0.8 Beta theme designed for MyBB