📋 0.7: Listeler

Liste Oluşturma, Eleman Erişimi ve Döngü ile Dolaşma

📖 Liste Nedir?

Liste, birden fazla değeri tek bir değişkende saklamamızı sağlayan veri yapısıdır. Python'da liste köşeli parantez [] ile oluşturulur.

🎯 Liste Özellikleri:
  • Sıralı: Elemanlar belirli bir sırada tutulur
  • İndeksli: Her elemana indeks (0'dan başlar) ile erişilir
  • Değiştirilebilir: Elemanlar eklenebilir, silinebilir, değiştirilebilir
  • Farklı türler: Aynı listede farklı veri türleri olabilir

🏗️ 1. Liste Oluşturma

📌 Liste Tanımlama

# Boş liste
bos_liste = []

# Sayılardan oluşan liste
sayilar = [1, 2, 5, 67, 98, 13]

# Metin listesi
isimler = ["Ali", "Veli", "Ayşe"]

# Karışık türler
karisik = [42, "Merhaba", 3.14, True]

# Listeler yazdır
print(sayilar)   # [1, 2, 5, 67, 98, 13]
print(isimler)   # ['Ali', 'Veli', 'Ayşe']

📊 Liste Görselleştirmesi

0
1
2
3
4
5
1
2
5
67
98
13

sayilar = [1, 2, 5, 67, 98, 13]

⚠️ Önemli: İndeksler 0'dan başlar! İlk eleman indeks 0, ikinci eleman indeks 1'dedir.

📏 2. Eleman Sayısı: len()

len() fonksiyonu listenin eleman sayısını döndürür:

📌 len() Kullanımı

sayilar = [1, 2, 5, 67, 98, 13]

# Eleman sayısı
uzunluk = len(sayilar)
print(f"Liste uzunluğu: {uzunluk}")  # 6

# Boş liste kontrolü
bos = []
print(f"Boş listenin uzunluğu: {len(bos)}")  # 0

# Koşulda kullanma
if len(bos) == 0:
    print("Liste boş!")

🔍 3. Elemanlara Erişim

📌 İndeks ile Erişim

sayilar = [1, 2, 5, 67, 98, 13]

# İlk eleman (indeks 0)
print(sayilar[0])  # 1

# Üçüncü eleman (indeks 2)
print(sayilar[2])  # 5

# Son eleman (indeks -1)
print(sayilar[-1])  # 13

# Sondan ikinci (indeks -2)
print(sayilar[-2])  # 98
💡 Negatif İndeksler:
  • liste[-1] → Son eleman
  • liste[-2] → Sondan ikinci
  • liste[-n] → Sondan n'inci

📌 Eleman Değiştirme

sayilar = [1, 2, 5, 67, 98, 13]

# 3. elemanı değiştir (indeks 2)
sayilar[2] = 100
print(sayilar)  # [1, 2, 100, 67, 98, 13]

# Son elemanı değiştir
sayilar[-1] = 999
print(sayilar)  # [1, 2, 100, 67, 98, 999]

🔄 4. Döngü ile Liste Dolaşma

Bir listedeki tüm elemanlara erişmek için döngü kullanırız. Bu, algoritmalarda en sık kullanılan işlemlerden biridir.

Yöntem 1: for-in (Doğrudan Erişim)

📌 for eleman in liste

isimler = ["Ali", "Veli", "Ayşe", "Fatma"]

for isim in isimler:
    print(f"Merhaba {isim}!")

# Çıktı:
# Merhaba Ali!
# Merhaba Veli!
# Merhaba Ayşe!
# Merhaba Fatma!

Yöntem 2: while ile İndeks Kullanarak

📌 while döngüsü (Algoritma derslerinde sık kullanılır)

a = [1, 2, 5, 67, 98, 13]

i = 0
while i < len(a):
    print(f"a[{i}] = {a[i]}")
    i += 1
a[0] = 1 a[1] = 2 a[2] = 5 a[3] = 67 a[4] = 98 a[5] = 13

Yöntem 3: for ile range() ve İndeks

📌 for i in range(len(liste))

sayilar = [10, 20, 30, 40, 50]

for i in range(len(sayilar)):
    print(f"İndeks {i}: {sayilar[i]}")
💡 Hangi Yöntemi Kullanmalı?
  • for eleman in liste: Sadece elemanlara ihtiyaç varsa (basit)
  • while + indeks: Algoritma derslerinde, indeks kontrolü gerektiğinde
  • for + range: Hem eleman hem indeks gerektiğinde

🎯 5. Listelerle Temel Algoritmalar

⚠️ Algoritma Dersinde: max(), min(), sum(), in gibi hazır fonksiyonları kullanmak yerine, döngü ile kendiniz yazmanız beklenir!

📌 Toplam Bulma

a = [7, 10, 4, 44]

i = 0
toplam = 0

while i < len(a):
    toplam += a[i]
    i += 1

print(f"Toplam: {toplam}")  # 65

# NOT: sum(a) kullanmak yerine döngü ile yazın!

📌 En Büyük Elemanı Bulma

a = [7, 10, 4, 44, 3, 25]

en_buyuk = a[0]  # İlk elemanı başlangıç kabul et
i = 1

while i < len(a):
    if a[i] > en_buyuk:
        en_buyuk = a[i]
    i += 1

print(f"En büyük: {en_buyuk}")  # 44

# NOT: max(a) kullanmak yerine döngü ile yazın!

📌 En Küçük Elemanı Bulma

a = [7, 10, 4, 44, 3, 25]

en_kucuk = a[0]
i = 1

while i < len(a):
    if a[i] < en_kucuk:
        en_kucuk = a[i]
    i += 1

print(f"En küçük: {en_kucuk}")  # 3

# NOT: min(a) kullanmak yerine döngü ile yazın!

📌 Doğrusal Arama (Linear Search)

a = [1, 2, 5, 67, 98, 13]
aranan = 67

i = 0
bulundu = False

while i < len(a):
    if a[i] == aranan:
        print(f"{aranan} bulundu! İndeks: {i}")
        bulundu = True
        break
    i += 1

if not bulundu:
    print(f"{aranan} listede yok")

# NOT: "aranan in a" kullanmak yerine döngü ile yazın!

📌 Ortalama (Mean) Hesaplama

a = [7, 10, 4, 44]

i = 0
toplam = 0

while i < len(a):
    toplam += a[i]
    i += 1

ortalama = toplam / len(a)
print(f"Ortalama: {ortalama}")  # 16.25

📌 Eleman Sayma

# Pozitif sayıları say
a = [3, -2, 7, 0, -5, 8, 1]

i = 0
pozitif_sayisi = 0

while i < len(a):
    if a[i] > 0:
        pozitif_sayisi += 1
    i += 1

print(f"Pozitif sayı adedi: {pozitif_sayisi}")  # 4

🔎 6. in Operatörü (Bilgi Amaçlı)

Python'da in operatörü ile liste içinde arama yapılabilir. Ancak algoritma dersinde kendi kodunuzu yazmanız beklenir.

📌 in Kullanımı

a = [1, 2, 5, 67, 98, 13]
aranan = 67

# Kolay yol (ama algoritmada kullanmayın!)
if aranan in a:
    print("Bulundu")
else:
    print("Bulunamadı")

# Sonucu doğrudan yazdırma
print(67 in a)   # True
print(100 in a)  # False
⚠️ Uyarı: Linear Search algoritması yazmanız istendiğinde in operatörünü kullanmak kabul edilmez!

➕ 7. Listeye Eleman Ekleme

📌 append() - Sona Ekleme

sayilar = [1, 2, 3]

sayilar.append(4)
print(sayilar)  # [1, 2, 3, 4]

sayilar.append(5)
print(sayilar)  # [1, 2, 3, 4, 5]

📌 Kullanıcıdan Liste Oluşturma

n = int(input("Kaç sayı gireceksiniz? "))
liste = []

for i in range(n):
    sayi = int(input(f"{i+1}. sayı: "))
    liste.append(sayi)

print(f"Oluşturulan liste: {liste}")

🎯 8. Pratik Örnekler

📌 Örnek 1: Çift Sayıları Filtrele

sayilar = [3, 8, 15, 22, 7, 10, 31, 44]
ciftler = []

i = 0
while i < len(sayilar):
    if sayilar[i] % 2 == 0:
        ciftler.append(sayilar[i])
    i += 1

print(f"Çift sayılar: {ciftler}")  # [8, 22, 10, 44]

📌 Örnek 2: Listeyi Ters Çevir

orijinal = [1, 2, 3, 4, 5]
ters = []

i = len(orijinal) - 1
while i >= 0:
    ters.append(orijinal[i])
    i -= 1

print(f"Ters liste: {ters}")  # [5, 4, 3, 2, 1]

📌 Örnek 3: İki Listenin Toplamı

a = [1, 2, 3, 4]
b = [10, 20, 30, 40]
toplam = []

i = 0
while i < len(a):
    toplam.append(a[i] + b[i])
    i += 1

print(f"Toplam: {toplam}")  # [11, 22, 33, 44]

📌 Örnek 4: Min ve Max İndekslerini Bul

a = [5, 2, 8, 1, 9, 3]

min_indeks = 0
max_indeks = 0

i = 1
while i < len(a):
    if a[i] < a[min_indeks]:
        min_indeks = i
    if a[i] > a[max_indeks]:
        max_indeks = i
    i += 1

print(f"Min değer: {a[min_indeks]} (indeks: {min_indeks})")
print(f"Max değer: {a[max_indeks]} (indeks: {max_indeks})")

📋 Özet

Bu Derste Öğrendiklerimiz:
  1. Liste oluşturma: liste = [1, 2, 3]
  2. Eleman sayısı: len(liste)
  3. Elemana erişim: liste[indeks] (0'dan başlar)
  4. Döngü ile dolaşma: while + indeks veya for-in
  5. Temel algoritmalar: Toplam, min/max, arama (döngü ile)
🎯 Algoritma Dersinde Unutmayın:
  • max(), min(), sum() yerine döngü yazın
  • in operatörü yerine Linear Search kodlayın
  • sorted() yerine sıralama algoritması yazın