Bir cümlelik özet
Liste birçok değeri sıralı biçimde bir arada tutan bir kutudur; sözlük ise her değeri bir anahtara bağlayarak saklar ve döngülerle bu verilerin hepsini kolayca gezebiliriz.
Neden önemli?
Şimdiye kadar tek tek değişkenler kullandık: isim1, isim2, isim3. Peki sınıfta otuz öğrenci varsa otuz değişken mi yazacağız? Bu hem yorucu hem de yönetilmesi zor olur.
Gerçek programlar tek bir sayı değil, çoğu zaman bir veri topluluğu ile çalışır: alışveriş listesi, oyundaki oyuncu isimleri, bir sınıfın notları. Listeler ve sözlükler bu toplulukları düzenli tutmamızı sağlar. Döngülerle birleştiğinde ise yüzlerce veriyi birkaç satırda işleyebiliriz.
Bu derste iki temel veri yapısını öğreniyorum ve paylaşıyorum: liste ve sözlük. İkisini de gerçek Python 3 koduyla deneyeceğiz.
Liste nedir?
Liste (list), birden çok değeri belirli bir sırayla tutan bir veri yapısıdır. Değerleri köşeli parantez [ ] içine yazar, aralarına virgül koyarız.
isimler = ["Ada", "Bora", "Ceren"]
print(isimler)
Bu kod ekrana şunu yazar:
['Ada', 'Bora', 'Ceren']
Bir liste sayı da tutabilir:
notlar = [85, 90, 78, 100]
print(notlar)
Elemana erişim: index
Listedeki her elemanın bir sıra numarası (index) vardır. Önemli bir kural: sayma 0'dan başlar. Yani ilk eleman 0, ikinci eleman 1'dir.
isimler = ["Ada", "Bora", "Ceren"]
print(isimler[0]) # Ada
print(isimler[1]) # Bora
print(isimler[2]) # Ceren
Sondan da erişebiliriz. -1 her zaman son elemanı verir:
print(isimler[-1]) # Ceren
Olmayan bir index istersek Python IndexError hatası verir. Örneğin yukarıdaki listede isimler[3] yoktur, çünkü en büyük index 2'dir.
Listeye eleman ekleme: append
Bir listeye sonradan eleman eklemek için append() kullanırız. Bu komut yeni değeri listenin sonuna ekler.
isimler = ["Ada", "Bora"]
isimler.append("Ceren")
print(isimler) # ['Ada', 'Bora', 'Ceren']
Boş bir listeyle başlayıp döngü içinde de doldurabiliriz:
isimler = []
isimler.append("Deniz")
isimler.append("Ege")
print(isimler) # ['Deniz', 'Ege']
Kaç eleman var? len
len() fonksiyonu listedeki eleman sayısını verir:
isimler = ["Ada", "Bora", "Ceren"]
print(len(isimler)) # 3
Listeyi döngüyle gezmek
Önceki derste öğrendiğimiz for döngüsü, listenin en güçlü arkadaşıdır. Her elemanı tek tek dolaşır:
isimler = ["Ada", "Bora", "Ceren"]
for isim in isimler:
print("Merhaba " + isim)
Çıktı:
Merhaba Ada
Merhaba Bora
Merhaba Ceren
Buradaki isim her turda listedeki bir sonraki değeri temsil eder. Döngü gövdesinin 4 boşlukla girintili olduğuna dikkat et; Python hangi satırların döngüye ait olduğunu bu girintiyle anlar.
Sözlük nedir?
Sözlük (dictionary), her değeri bir anahtar (key) ile eşleştirerek saklar. Gerçek bir sözlük gibi düşün: kelimeyi (anahtar) ararsın, karşısında anlamını (değer) bulursun.
Sözlükleri süslü parantez { } içinde, anahtar: değer biçiminde yazarız.
ogrenci = {"isim": "Ada", "yas": 12, "sinif": "6-B"}
print(ogrenci)
Listede elemana sıra numarasıyla ulaşırdık; sözlükte ise anahtar kullanırız:
print(ogrenci["isim"]) # Ada
print(ogrenci["yas"]) # 12
Sözlüğe yeni bilgi ekleme
Yeni bir anahtar-değer çifti eklemek çok kolaydır:
ogrenci = {"isim": "Ada", "yas": 12}
ogrenci["sehir"] = "İzmir"
print(ogrenci)
Çıktı:
{'isim': 'Ada', 'yas': 12, 'sehir': 'İzmir'}
Aynı yöntemle var olan bir değeri de güncelleyebiliriz. ogrenci["yas"] = 13 yazarsak yaş değeri değişir.
Örnek: Öğrenci-not sözlüğü
Bir sözlükte anahtarlar öğrenci isimleri, değerler ise notlar olabilir:
notlar = {"Ada": 85, "Bora": 90, "Ceren": 78}
print(notlar["Bora"]) # 90
Sözlüğü döngüyle gezerken hem anahtarı hem değeri almak için .items() kullanırız:
notlar = {"Ada": 85, "Bora": 90, "Ceren": 78}
for isim, not_degeri in notlar.items():
print(isim + ": " + str(not_degeri))
Çıktı:
Ada: 85
Bora: 90
Ceren: 78
Burada not_degeri bir sayı olduğu için, metinle birleştirmeden önce str() ile metne çevirdik.
Mini uygulama
Bir sınıfın notlarını tutan küçük bir program yazalım. Program hem tek tek nota bakabilsin hem de sınıf ortalamasını hesaplasın.
notlar = {"Ada": 85, "Bora": 90, "Ceren": 78}
# Yeni bir öğrenci ekle
notlar["Deniz"] = 92
toplam = 0
for isim, not_degeri in notlar.items():
print(isim + " notu: " + str(not_degeri))
toplam = toplam + not_degeri
ortalama = toplam / len(notlar)
print("Sınıf ortalaması: " + str(ortalama))
Bu kodu çalıştırdığında her öğrencinin notu sırayla yazılır, sonra ortalama hesaplanır. len(notlar) sözlükteki öğrenci sayısını verdiği için toplamı ona böleriz.
Kendin dene:
- Listeye kendi arkadaşlarının isimlerinden bir liste oluştur ve döngüyle selam ver.
- Sözlüğe bir öğrenci daha ekle ve ortalamanın nasıl değiştiğini gözlemle.
Uygulama laboratuvarı: Listeler ve Sözlükler
Listeler ve Sözlükler konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Liste nedir? ile Listeye eleman ekleme: append arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: kullanıcıdan veri alıp hatalı girişi açıklayan yardımcı. Dersin ana hedefi “Listelerle sıralı veriyi, sözlüklerle anahtar-değer eşlemeyi tutmayı ve gezmeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Kod Python 3 sözdizimiyle çalışıyor mu?
- Değişken ve fonksiyon adları amacı açıklıyor mu?
- Boş, yanlış türde ve sınırdaki girdiler denendi mi?
- Hata mesajı kullanıcıya neyi düzeltmesi gerektiğini söylüyor mu?
- Aynı kod gereksiz tekrar olmadan yeniden kullanılabiliyor mu?
“Listeler ve Sözlükler” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın kullanıcıdan veri alıp hatalı girişi açıklayan yardımcı senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Liste nedir? ve Listeye eleman ekleme: append ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Index 0'dan başlar
İlk elemanı liste[1] ile almaya çalışmak sık yapılan bir hatadır. Unutma: ilk eleman liste[0]'dır.
Olmayan index'i istemek
Üç elemanlı bir listede liste[3] yoktur ve IndexError alırsın. En büyük geçerli index, uzunluğun bir eksiğidir.
Sözlükte olmayan anahtarı çağırmak
notlar["Efe"] diye ararsın ama sözlükte "Efe" yoksa KeyError alırsın. Anahtarın var olduğundan emin ol.
Liste ile sözlüğü karıştırmak
Liste sıra numarasıyla ([0]), sözlük anahtarla (["isim"]) çalışır. Köşeli parantez ikisinde de kullanılır ama içine yazdığın şey farklıdır.
Sayıyı metinle birleştirmek
print("Not: " + 90) hata verir; çünkü metinle sayı doğrudan birleştirilemez. str(90) ile önce metne çevir.
Güvenlik notu
Bu ders tamamen kendi bilgisayarında, kendi yazdığın kodu çalıştırmakla ilgilidir. İnternette bulduğun tanımadığın kodları anlamadan çalıştırma. Ayrıca örneklerde kendi ve başkalarının gerçek kişisel bilgilerini (tam ad, adres, telefon) kullanma; alıştırmalar için takma isimler yeterlidir.
Ders özeti
- Liste, birden çok değeri sıralı biçimde tutar; köşeli parantez
[ ]ile yazılır ve index'i 0'dan başlar. append()listeye eleman ekler,len()eleman sayısını verir,fordöngüsü her elemanı gezer.- Sözlük, her değeri bir anahtarla eşleştirir; süslü parantez
{ }ile yazılır ve elemana anahtarla erişilir. sozluk[anahtar] = degeryazarak yeni bilgi ekler veya var olanı güncelleriz..items()ile sözlüğün hem anahtarını hem değerini aynı anda döngüyle gezebiliriz.
Kontrol soruları
renkler = ["kırmızı", "yeşil", "mavi"]listesinderenkler[1]hangi değeri verir?- Bir listeye sonuna eleman eklemek için hangi komutu kullanırız?
len(["a", "b", "c", "d"])kaç sonucunu verir?ogrenci = {"isim": "Ada"}sözlüğüne yaş bilgisini nasıl ekleriz?- Sözlükte hem anahtarları hem değerleri döngüyle gezmek için hangi yöntemi kullanırız?
Cevaplar
"yeşil". Index 0'dan başladığı içinrenkler[0]"kırmızı",renkler[1]"yeşil"dir.append(). Örneğinrenkler.append("sarı")yeni rengi listenin sonuna ekler.4.len()fonksiyonu listedeki eleman sayısını verir.ogrenci["yas"] = 12yazarak. Bu satır sözlüğe yeni bir anahtar-değer çifti ekler..items()yönteminifor anahtar, deger in sozluk.items():biçiminde kullanırız.
Kaynak ve doğrulama notu
“Listeler ve Sözlükler” dersi için doğrulama odağı Liste nedir? ile Listeye eleman ekleme: append arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.
Sonraki ders
Fonksiyonlar: Tekrar eden kod bloklarına bir isim vererek kendi komutlarımızı yazmayı öğreneceğiz.