Python Liste İşlemleri - Detaylı Rehber
Giriş
Bu derste Python'da liste (list) veri yapısını detaylı olarak öğreneceğiz. Listeler, Python'da en çok kullanılan veri yapılarından biridir ve çok esnek özelliklere sahiptir. Index mantığını iyice anlayarak, en çok kullanılan liste metodlarını öğreneceğiz.
Liste Nedir?
Liste, farklı veri tiplerini içerebilen, sıralı (sequence) ve mutable (değiştirilebilir) bir veri yapısıdır.
# Liste oluşturma yöntemleri
liste1 = [1, 2, 3, 4, 5]
liste2 = ["Python", "Java", "C++"]
liste3 = [1, "Python", 3.14, True] # Farklı tipler
liste4 = [] # Boş liste
liste5 = list("Python") # String'den liste oluşturma
liste6 = list(range(5)) # Range'den liste oluşturma
print(f"liste1: {liste1}")
print(f"liste2: {liste2}")
print(f"liste3: {liste3}")
print(f"liste4: {liste4}")
print(f"liste5: {liste5}") # ['P', 'y', 't', 'h', 'o', 'n']
print(f"liste6: {liste6}") # [0, 1, 2, 3, 4]
# Liste uzunluğu
print(f"liste1 uzunluğu: {len(liste1)}")
print(f"liste2 uzunluğu: {len(liste2)}")
Index Mantığı - Temel Kavram
Index Nedir?
Index, liste içindeki elemanların pozisyon numarasıdır. Python'da indexleme 0'dan başlar.
sayilar = [10, 20, 30, 40, 50]
# Index: 0 1 2 3 4
print(sayilar[0]) # 10 (ilk eleman)
print(sayilar[1]) # 20
print(sayilar[2]) # 30
print(sayilar[3]) # 40
print(sayilar[4]) # 50 (son eleman)
Negatif Index
Python'da negatif index kullanarak sondan başlayarak elemanlara erişebiliriz:
sayilar = [10, 20, 30, 40, 50]
# Pozitif index: 0 1 2 3 4
# Negatif index: -5 -4 -3 -2 -1
print(sayilar[-1]) # 50 (son eleman)
print(sayilar[-2]) # 40
print(sayilar[-3]) # 30
print(sayilar[-4]) # 20
print(sayilar[-5]) # 10 (ilk eleman)
Index Hatası
Var olmayan bir indexe erişmeye çalışırsak IndexError alırız:
sayilar = [10, 20, 30, 40, 50]
# print(sayilar[5]) # IndexError: list index out of range
# print(sayilar[-6]) # IndexError: list index out of range
# Güvenli erişim için kontrol
if len(sayilar) > 5:
print(sayilar[5])
else:
print("Bu index mevcut değil!")
Liste Uzunluğu
len() fonksiyonu ile listenin uzunluğunu öğrenebiliriz:
sayilar = [10, 20, 30, 40, 50]
uzunluk = len(sayilar)
print(f"Liste uzunluğu: {uzunluk}")
# Boş liste
bos_liste = []
print(f"Boş liste uzunluğu: {len(bos_liste)}") # 0
Liste Slicing (Dilimleme)
Listelerde de string'lerdeki gibi slicing kullanabiliriz. Format: liste[başlangıç:bitiş:adım]
Temel Slicing
sayilar = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
# Temel slicing
print(sayilar[0:5]) # [10, 20, 30, 40, 50] (0'dan 5'e kadar, 5 dahil değil)
print(sayilar[2:7]) # [30, 40, 50, 60, 70]
print(sayilar[:5]) # [10, 20, 30, 40, 50] (baştan 5'e kadar)
print(sayilar[5:]) # [60, 70, 80, 90, 100] (5'ten sona kadar)
print(sayilar[:]) # [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] (tamamı)
# Tek eleman alma
print(sayilar[0]) # 10
print(sayilar[1]) # 20
Negatif Index ile Slicing
sayilar = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
# Negatif index ile slicing
print(sayilar[-5:]) # [60, 70, 80, 90, 100] (sondan 5 eleman)
print(sayilar[:-5]) # [10, 20, 30, 40, 50] (sondan 5 eleman hariç)
print(sayilar[-7:-3]) # [40, 50, 60, 70] (sondan 7'den 3'e kadar)
print(sayilar[-6:]) # [50, 60, 70, 80, 90, 100] (sondan 6 eleman)
Adım (Step) Kullanımı
sayilar = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
# Adım kullanımı
print(sayilar[::2]) # [10, 30, 50, 70, 90] (2'şer atlayarak)
print(sayilar[1::2]) # [20, 40, 60, 80, 100] (1'den başlayarak 2'şer atlayarak)
print(sayilar[::3]) # [10, 40, 70, 100] (3'er atlayarak)
print(sayilar[::4]) # [10, 50, 90] (4'er atlayarak)
# Negatif adım (tersten)
print(sayilar[::-1]) # [100, 90, 80, 70, 60, 50, 40, 30, 20, 10] (tersten)
print(sayilar[::-2]) # [100, 80, 60, 40, 20] (tersten 2'şer atlayarak)
Pratik Slicing Örnekleri
sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# İlk 3 elemanı al
ilk_uc = sayilar[:3]
print(f"İlk 3 eleman: {ilk_uc}") # [1, 2, 3]
# Son 3 elemanı al
son_uc = sayilar[-3:]
print(f"Son 3 eleman: {son_uc}") # [8, 9, 10]
# Ortadaki elemanları al
orta = sayilar[3:7]
print(f"Ortadaki elemanlar: {orta}") # [4, 5, 6, 7]
# Çift indeksli elemanları al
cift_indeks = sayilar[::2]
print(f"Çift indeksli elemanlar: {cift_indeks}") # [1, 3, 5, 7, 9]
Liste Elemanlarına Erişim ve Değiştirme
Elemanlara Erişim
sayilar = [10, 20, 30, 40, 50]
# Elemanlara erişim
print(sayilar[0]) # 10
print(sayilar[2]) # 30
print(sayilar[-1]) # 50
print(sayilar[-3]) # 30
# İç içe listelerde erişim
matris = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matris[0]) # [1, 2, 3]
print(matris[0][1]) # 2
print(matris[1][2]) # 6
Elemanları Değiştirme
sayilar = [10, 20, 30, 40, 50]
# Tek eleman değiştirme
sayilar[1] = 25
print(sayilar) # [10, 25, 30, 40, 50]
sayilar[-1] = 55
print(sayilar) # [10, 25, 30, 40, 55]
# Slicing ile değiştirme
sayilar[1:3] = [22, 33]
print(sayilar) # [10, 22, 33, 40, 55]
# Birden fazla eleman ekleme
sayilar[1:1] = [15, 16] # 1. pozisyona ekle
print(sayilar) # [10, 15, 16, 22, 33, 40, 55]
En Çok Kullanılan Liste Metodları
1. Eleman Ekleme Metodları
append() - Sona Eleman Ekleme
sayilar = [1, 2, 3]
# append() - sona eleman ekleme
sayilar.append(4)
print(sayilar) # [1, 2, 3, 4]
sayilar.append(5)
print(sayilar) # [1, 2, 3, 4, 5]
# Farklı tipler ekleyebiliriz
sayilar.append("Python")
print(sayilar) # [1, 2, 3, 4, 5, 'Python']
# Liste ekleme
sayilar.append([6, 7, 8])
print(sayilar) # [1, 2, 3, 4, 5, 'Python', [6, 7, 8]]
insert() - Belirli Pozisyona Eleman Ekleme
sayilar = [1, 2, 3, 4]
# insert() - belirli pozisyona eleman ekleme
sayilar.insert(1, 1.5)
print(sayilar) # [1, 1.5, 2, 3, 4]
sayilar.insert(0, 0)
print(sayilar) # [0, 1, 1.5, 2, 3, 4]
sayilar.insert(-1, 3.5) # Son elemandan önce ekle
print(sayilar) # [0, 1, 1.5, 2, 3, 3.5, 4]
# Son pozisyona ekleme
sayilar.insert(len(sayilar), 5)
print(sayilar) # [0, 1, 1.5, 2, 3, 3.5, 4, 5]
extend() - Başka Bir Listeyi Ekleme
liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
# extend() - başka bir listeyi ekleme
liste1.extend(liste2)
print(liste1) # [1, 2, 3, 4, 5, 6]
# Farklı yöntemler
liste3 = [7, 8, 9]
liste1.extend(liste3)
print(liste1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
# + operatörü ile birleştirme (yeni liste oluşturur)
birlesik = liste1 + liste2
print(birlesik) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 6]
2. Eleman Silme Metodları
remove() - Değere Göre Silme
sayilar = [10, 20, 30, 20, 40, 50]
# remove() - değere göre silme (ilk bulduğunu siler)
sayilar.remove(20)
print(sayilar) # [10, 30, 20, 40, 50]
sayilar.remove(20) # İkinci 20'yi siler
print(sayilar) # [10, 30, 40, 50]
# Olmayan eleman silmeye çalışırsak hata alırız
# sayilar.remove(100) # ValueError: list.remove(x): x not in list
# Güvenli silme
def guvenli_sil(liste, eleman):
if eleman in liste:
liste.remove(eleman)
return True
else:
return False
print(guvenli_sil(sayilar, 30)) # True
print(guvenli_sil(sayilar, 100)) # False
pop() - Index'e Göre Silme
sayilar = [10, 20, 30, 40, 50]
# pop() - index'e göre silme (varsayılan olarak son elemanı siler)
silinen = sayilar.pop()
print(f"Silinen: {silinen}") # Silinen: 50
print(sayilar) # [10, 20, 30, 40]
silinen2 = sayilar.pop(1)
print(f"Silinen: {silinen2}") # Silinen: 20
print(sayilar) # [10, 30, 40]
# Son elemanı silme
son_eleman = sayilar.pop(-1)
print(f"Son eleman: {son_eleman}") # Son eleman: 40
print(sayilar) # [10, 30]
# Boş listeden pop yapmaya çalışırsak hata alırız
# sayilar.pop() # IndexError: pop from empty list
del - Index veya Slicing ile Silme
sayilar = [10, 20, 30, 40, 50, 60, 70]
# del - index veya slicing ile silme
del sayilar[0]
print(sayilar) # [20, 30, 40, 50, 60, 70]
del sayilar[1:3] # 1'den 3'e kadar sil (3 dahil değil)
print(sayilar) # [20, 50, 60, 70]
del sayilar[-1] # Son elemanı sil
print(sayilar) # [20, 50, 60]
# Tüm listeyi sil
del sayilar[:]
print(sayilar) # []
clear() - Tüm Elemanları Silme
sayilar = [1, 2, 3, 4, 5]
# clear() - tüm elemanları silme
sayilar.clear()
print(sayilar) # []
print(len(sayilar)) # 0
3. Arama ve Sıralama Metodları
index() - Elemanın Index'ini Bulma
sayilar = [3, 1, 4, 1, 5, 9, 2, 6]
# index() - elemanın index'ini bulma
print(sayilar.index(1)) # 1 (ilk bulduğunun index'i)
print(sayilar.index(1, 2)) # 3 (2'den sonra ara)
print(sayilar.index(5)) # 4
# Olmayan eleman ararsak hata alırız
# print(sayilar.index(10)) # ValueError: 10 is not in list
# Güvenli arama
def guvenli_index(liste, eleman):
try:
return liste.index(eleman)
except ValueError:
return -1
print(guvenli_index(sayilar, 5)) # 4
print(guvenli_index(sayilar, 10)) # -1
count() - Elemanın Kaç Kez Geçtiğini Sayma
sayilar = [1, 2, 2, 3, 2, 4, 5, 2]
# count() - elemanın kaç kez geçtiğini sayma
print(sayilar.count(2)) # 4
print(sayilar.count(1)) # 1
print(sayilar.count(10)) # 0
# Pratik örnek - En çok geçen elemanı bulma
def en_cok_gecen(liste):
if not liste:
return None
en_cok_eleman = liste[0]
en_cok_sayi = liste.count(liste[0])
for eleman in liste:
sayi = liste.count(eleman)
if sayi > en_cok_sayi:
en_cok_sayi = sayi
en_cok_eleman = eleman
return en_cok_eleman, en_cok_sayi
sonuc = en_cok_gecen(sayilar)
print(f"En çok geçen: {sonuc[0]} ({sonuc[1]} kez)")
sort() - Sıralama
sayilar = [3, 1, 4, 1, 5, 9, 2, 6]
# sort() - sıralama (listeyi değiştirir)
sayilar.sort()
print(sayilar) # [1, 1, 2, 3, 4, 5, 6, 9]
# Ters sıralama
sayilar.sort(reverse=True)
print(sayilar) # [9, 6, 5, 4, 3, 2, 1, 1]
# String listesi sıralama
kelimeler = ["Python", "Java", "C++", "JavaScript"]
kelimeler.sort()
print(kelimeler) # ['C++', 'Java', 'JavaScript', 'Python']
# Karma tip liste sıralama
karma = [3, "Python", 1, "Java"]
# karma.sort() # TypeError: '<' not supported between instances of 'str' and 'int'
sorted() - Yeni Sıralı Liste Oluşturma
sayilar = [3, 1, 4, 1, 5, 9, 2, 6]
# sorted() - yeni sıralı liste oluşturur (orijinali değiştirmez)
sirali = sorted(sayilar)
print(sayilar) # [3, 1, 4, 1, 5, 9, 2, 6] (değişmedi)
print(sirali) # [1, 1, 2, 3, 4, 5, 6, 9]
# Ters sıralama
ters_sirali = sorted(sayilar, reverse=True)
print(ters_sirali) # [9, 6, 5, 4, 3, 2, 1, 1]
reverse() - Ters Çevirme
sayilar = [1, 2, 3, 4, 5]
# reverse() - ters çevirme (listeyi değiştirir)
sayilar.reverse()
print(sayilar) # [5, 4, 3, 2, 1]
# reversed() - yeni ters liste oluşturur
sayilar2 = [1, 2, 3, 4, 5]
ters_liste = list(reversed(sayilar2))
print(sayilar2) # [1, 2, 3, 4, 5] (değişmedi)
print(ters_liste) # [5, 4, 3, 2, 1]
4. Kopyalama
Sığ Kopya (Shallow Copy)
# Sığ kopya (shallow copy)
liste1 = [1, 2, 3]
liste2 = liste1.copy() # veya liste2 = liste1[:]
liste2[0] = 10
print(liste1) # [1, 2, 3] (değişmedi)
print(liste2) # [10, 2, 3]
# İç içe listelerde sorun
liste3 = [[1, 2], [3, 4]]
liste4 = liste3.copy()
liste4[0][0] = 10
print(liste3) # [[10, 2], [3, 4]] (değişti!)
print(liste4) # [[10, 2], [3, 4]]
Derin Kopya (Deep Copy)
import copy
# Derin kopya (deep copy) - iç içe listeler için
liste3 = [[1, 2], [3, 4]]
liste4 = copy.deepcopy(liste3)
liste4[0][0] = 10
print(liste3) # [[1, 2], [3, 4]] (değişmedi)
print(liste4) # [[10, 2], [3, 4]]
Liste Comprehension
Liste comprehension, liste oluşturmanın kısa ve etkili bir yoludur.
Temel Liste Comprehension
# Temel liste comprehension
sayilar = [1, 2, 3, 4, 5]
kareler = [x**2 for x in sayilar]
print(kareler) # [1, 4, 9, 16, 25]
# String listesi
kelimeler = ["Python", "Java", "C++"]
buyuk_harfler = [kelime.upper() for kelime in kelimeler]
print(buyuk_harfler) # ['PYTHON', 'JAVA', 'C++']
# Karakter listesi
metin = "Python"
karakterler = [harf for harf in metin]
print(karakterler) # ['P', 'y', 't', 'h', 'o', 'n']
Koşullu Liste Comprehension
sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Koşullu liste comprehension
cift_sayilar = [x for x in sayilar if x % 2 == 0]
print(cift_sayilar) # [2, 4, 6, 8, 10]
tek_sayilar = [x for x in sayilar if x % 2 == 1]
print(tek_sayilar) # [1, 3, 5, 7, 9]
# Pozitif sayılar
sayilar2 = [-3, 1, -5, 2, 0, 8, -1, 4]
pozitif = [x for x in sayilar2 if x > 0]
print(pozitif) # [1, 2, 8, 4]
# String filtreleme
kelimeler = ["Python", "Java", "C++", "JavaScript", "PHP"]
uzun_kelimeler = [kelime for kelime in kelimeler if len(kelime) > 4]
print(uzun_kelimeler) # ['Python', 'JavaScript']
Karmaşık Liste Comprehension
# Karmaşık örnek
metin = "Python Programlama"
buyuk_harfler = [harf.upper() for harf in metin if harf.isalpha()]
print(buyuk_harfler) # ['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'R', 'O', 'G', 'R', 'A', 'M', 'L', 'A', 'M', 'A']
# İç içe liste comprehension
matris = [[i+j for j in range(3)] for i in range(3)]
print(matris) # [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
# Koşullu dönüşüm
sayilar = [1, 2, 3, 4, 5]
donusum = [x*2 if x % 2 == 0 else x*3 for x in sayilar]
print(donusum) # [3, 4, 9, 8, 15]
İç İçe Listeler (Nested Lists)
2D Liste (Matris)
# 2D liste (matris)
matris = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matris[0]) # [1, 2, 3]
print(matris[0][1]) # 2
print(matris[1][2]) # 6
# Matris işlemleri
for satir in matris:
for eleman in satir:
print(eleman, end=" ")
print() # Yeni satır
# Matris oluşturma
def matris_olustur(satir, sutun):
return [[0 for j in range(sutun)] for i in range(satir)]
yeni_matris = matris_olustur(3, 4)
print(yeni_matris) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
3D Liste
# 3D liste
kup = [
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
]
]
print(kup[0]) # [[1, 2], [3, 4]]
print(kup[0][1]) # [3, 4]
print(kup[0][1][0]) # 3
# 3D liste oluşturma
def kup_olustur(boyut):
return [[[0 for k in range(boyut)] for j in range(boyut)] for i in range(boyut)]
yeni_kup = kup_olustur(2)
print(yeni_kup) # [[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
Pratik Liste Örnekleri
1. Liste Filtreleme
def pozitif_sayilar(liste):
return [x for x in liste if x > 0]
def cift_sayilar(liste):
return [x for x in liste if x % 2 == 0]
def tek_sayilar(liste):
return [x for x in liste if x % 2 == 1]
# Test
sayilar = [-3, 1, -5, 2, 0, 8, -1, 4]
print(f"Pozitif sayılar: {pozitif_sayilar(sayilar)}")
print(f"Çift sayılar: {cift_sayilar(sayilar)}")
print(f"Tek sayılar: {tek_sayilar(sayilar)}")
2. Liste İstatistikleri
def liste_istatistikleri(liste):
if not liste:
return None
return {
'toplam': sum(liste),
'ortalama': sum(liste) / len(liste),
'minimum': min(liste),
'maksimum': max(liste),
'uzunluk': len(liste),
'medyan': sorted(liste)[len(liste)//2] if len(liste) % 2 == 1 else (sorted(liste)[len(liste)//2-1] + sorted(liste)[len(liste)//2]) / 2
}
# Test
sayilar = [10, 20, 30, 40, 50]
istatistikler = liste_istatistikleri(sayilar)
for key, value in istatistikler.items():
print(f"{key}: {value}")
3. Liste Birleştirme ve Temizleme
def listeleri_birlestir(liste1, liste2):
# Tekrarlayan elemanları çıkararak birleştir
birlesik = liste1 + liste2
return list(set(birlesik))
def tekrarlari_temizle(liste):
# Sırayı koruyarak tekrarları temizle
temiz = []
for eleman in liste:
if eleman not in temiz:
temiz.append(eleman)
return temiz
def tekrarlari_say(liste):
# Her elemanın kaç kez geçtiğini say
sayac = {}
for eleman in liste:
if eleman in sayac:
sayac[eleman] += 1
else:
sayac[eleman] = 1
return sayac
# Test
liste1 = [1, 2, 3, 4]
liste2 = [3, 4, 5, 6]
print(f"Birleştirilmiş: {listeleri_birlestir(liste1, liste2)}")
tekrarli = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
print(f"Temizlenmiş: {tekrarlari_temizle(tekrarli)}")
print(f"Tekrar sayıları: {tekrarlari_say(tekrarli)}")
4. Liste Sıralama ve Arama
def en_buyuk_n_eleman(liste, n):
# En büyük n elemanı döndür
return sorted(liste, reverse=True)[:n]
def en_kucuk_n_eleman(liste, n):
# En küçük n elemanı döndür
return sorted(liste)[:n]
def ikinci_en_buyuk(liste):
# İkinci en büyük elemanı bul
if len(liste) < 2:
return None
sirali = sorted(liste, reverse=True)
return sirali[1]
# Test
sayilar = [10, 5, 20, 15, 30, 25]
print(f"En büyük 3 eleman: {en_buyuk_n_eleman(sayilar, 3)}")
print(f"En küçük 3 eleman: {en_kucuk_n_eleman(sayilar, 3)}")
print(f"İkinci en büyük: {ikinci_en_buyuk(sayilar)}")
5. Liste Dönüşümleri
def liste_donustur(liste, islem):
# Liste elemanlarını dönüştür
if islem == "kare":
return [x**2 for x in liste]
elif islem == "kup":
return [x**3 for x in liste]
elif islem == "mutlak":
return [abs(x) for x in liste]
elif islem == "string":
return [str(x) for x in liste]
else:
return liste
def liste_filtrele_donustur(liste, kosul, islem):
# Koşula uyan elemanları dönüştür
return [islem(x) for x in liste if kosul(x)]
# Test
sayilar = [-3, 1, -5, 2, 0, 8, -1, 4]
print(f"Kareler: {liste_donustur(sayilar, 'kare')}")
print(f"Mutlak değerler: {liste_donustur(sayilar, 'mutlak')}")
print(f"Pozitif sayıların kareleri: {liste_filtrele_donustur(sayilar, lambda x: x > 0, lambda x: x**2)}")
Pratik Alıştırmalar
Alıştırma 1: Bir listedeki en büyük 3 elemanı bulan fonksiyon yazın.
def en_buyuk_uc(liste):
return sorted(liste, reverse=True)[:3]
# Test
sayilar = [10, 5, 20, 15, 30, 25]
print(en_buyuk_uc(sayilar)) # [30, 25, 20]
Alıştırma 2: İki listeyi eleman eleman toplayan fonksiyon yazın.
def listeleri_topla(liste1, liste2):
return [a + b for a, b in zip(liste1, liste2)]
# Test
liste1 = [1, 2, 3, 4]
liste2 = [5, 6, 7, 8]
print(listeleri_topla(liste1, liste2)) # [6, 8, 10, 12]
Alıştırma 3: Bir listedeki elemanları ters sırada döndüren fonksiyon yazın.
def ters_liste(liste):
return liste[::-1]
# Test
sayilar = [1, 2, 3, 4, 5]
print(ters_liste(sayilar)) # [5, 4, 3, 2, 1]
Alıştırma 4: Bir listedeki tekrarlayan elemanları bulan fonksiyon yazın.
def tekrarlayan_elemanlar(liste):
tekrarlar = []
for eleman in liste:
if liste.count(eleman) > 1 and eleman not in tekrarlar:
tekrarlar.append(eleman)
return tekrarlar
# Test
sayilar = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
print(tekrarlayan_elemanlar(sayilar)) # [2, 3, 4]
Alıştırma 5: Bir listeyi belirli bir elemana göre bölen fonksiyon yazın.
def listeyi_bol(liste, ayrac):
sonuclar = []
gecici = []
for eleman in liste:
if eleman == ayrac:
if gecici:
sonuclar.append(gecici)
gecici = []
else:
gecici.append(eleman)
if gecici:
sonuclar.append(gecici)
return sonuclar
# Test
sayilar = [1, 2, 0, 3, 4, 0, 5, 6]
print(listeyi_bol(sayilar, 0)) # [[1, 2], [3, 4], [5, 6]]
İleri Seviye Liste İşlemleri
Lambda Fonksiyonları ile Liste İşlemleri
# map() ile liste işlemleri
sayilar = [1, 2, 3, 4, 5]
kareler = list(map(lambda x: x**2, sayilar))
print(kareler) # [1, 4, 9, 16, 25]
# filter() ile filtreleme
cift_sayilar = list(filter(lambda x: x % 2 == 0, sayilar))
print(cift_sayilar) # [2, 4]
# reduce() ile toplama
from functools import reduce
toplam = reduce(lambda x, y: x + y, sayilar)
print(toplam) # 15
# Karmaşık örnek
karma_liste = [1, "Python", 3.14, True, "Java"]
sayilar = list(filter(lambda x: isinstance(x, (int, float)), karma_liste))
print(sayilar) # [1, 3.14]
Liste Comprehension ile Gelişmiş İşlemler
# İç içe liste comprehension
matris = [[i*j for j in range(1, 6)] for i in range(1, 6)]
print(matris)
# Koşullu dönüşüm
sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
donusum = [x*2 if x % 2 == 0 else x*3 for x in sayilar]
print(donusum)
# Çoklu koşul
sonuclar = []
for x in sayilar:
if x < 5:
sonuclar.append(x*2)
elif x < 8:
sonuclar.append(x*3)
else:
sonuclar.append(x*4)
print(sonuclar)
# Liste comprehension ile aynı işlem
sonuclar2 = [x*2 if x < 5 else x*3 if x < 8 else x*4 for x in sayilar]
print(sonuclar2)
Genel Pratik Projeleri
Proje 1: Öğrenci Not Sistemi
- Öğrenci bilgilerini listelerde saklama
- Not hesaplama ve sıralama
- Ortalama ve istatistikler
Proje 2: Basit Veritabanı
- CSV formatında veri saklama
- Arama ve filtreleme
- Veri ekleme ve silme
Proje 3: Oyun Skor Sistemi
- Oyuncu skorlarını saklama
- En yüksek skorları listeleme
- Ortalama skor hesaplama
Proje 4: Basit Hesap Makinesi
- İşlem geçmişini saklama
- Son işlemleri listeleme
- İstatistik hesaplama
Proje 5: Dosya İşleme Sistemi
- Dosya listelerini yönetme
- Dosya boyutlarını hesaplama
- Filtreleme ve sıralama
Özet
Bu rehberde Python'da liste işlemleri hakkında detaylı bilgi edindiniz:
Temel Kavramlar:
- Index mantığı: 0'dan başlayan pozisyon numaraları
- Negatif index: Sondan başlayarak erişim
- Slicing: Belirli kısımları alma
- Mutable: Listeler değiştirilebilir
En Çok Kullanılan Metodlar:
- Ekleme: append(), insert(), extend()
- Silme: remove(), pop(), del, clear()
- Arama: index(), count()
- Sıralama: sort(), sorted(), reverse()
- Kopyalama: copy(), deepcopy()
Özel Özellikler:
- Liste Comprehension: Kısa ve etkili liste oluşturma
- İç içe listeler: Matris ve 3D yapılar
- Farklı tipler: Aynı listede farklı veri tipleri
Pratik Uygulamalar:
- Liste filtreleme ve dönüştürme
- İstatistik hesaplama
- Veri işleme ve analiz
- Algoritma uygulamaları
ÖNEMLİ: Index mantığını iyice anlayın - 0'dan başlar ve negatif indexler sondan başlar!
Her bölümdeki pratik alıştırmaları yaparak konuları pekiştirin ve projelerle gerçek uygulamalar geliştirin.