Python, veri yapıları söz konusu olduğunda sadeliği ve gücü birleştiren bir dildir. Bu veri yapılarının en temellerinden biri olan listeler, birden fazla öğeyi tek bir değişken içinde düzenli ve esnek bir şekilde saklamak için vazgeçilmezdir.
1. Liste Nedir ve Nasıl Oluşturulur?
Python’daki bir liste, aşağıdaki temel özelliklere sahip bir veri yapısıdır:
- Sıralı (Ordered): Öğeler eklendiği sırayı korur ve indeksleri aracılığıyla erişilebilir.
- Değiştirilebilir (Mutable): Oluşturulduktan sonra içindeki öğeler değiştirilebilir, eklenebilir veya silinebilir.
- Farklı Veri Tipleri: Bir liste, integer, string, boolean ve hatta başka listeler gibi farklı veri tiplerini aynı anda barındırabilir.
Listeler, köşeli parantezler ([]) kullanılarak oluşturulur ve öğeler virgülle ayrılır.
Örnek:
1 2 3 4 5 6 7 | # Farklı veri tipleri içeren bir liste karisik_liste = ["Elma", 2024, 3.14, True] # Boş bir liste bos_liste = [] |
2. Liste Öğelerine Erişim ve Dilimleme (Slicing)
Listelerdeki öğelere, o öğenin konumunu belirten bir indeks (sıra numarası) ile erişilir. Python’da indeksleme 0’dan başlar.
A. İndeksleme
| İndeks | Öğeye Erişim | Açıklama |
| 0 | karisik_liste[0] | Listenin ilk öğesi. |
| -1 | karisik_liste[-1] | Listenin son öğesi (Negatif indeksleme). |
B. Dilimleme (Slicing)
Listeden bir aralık seçmek için dilimleme kullanılır. Sözdizimi [başlangıç:bitiş:adım] şeklindedir ve bitiş indeksi her zaman hariç tutulur.
1 2 3 4 5 6 7 8 9 10 11 12 | harfler = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] # Index 1'den (b) Index 4'e (e) kadar al, ancak 4 dahil değil. print(harfler[1:4]) # Çıktı: ['b', 'c', 'd'] # Listenin başından Index 3'e kadar al. print(harfler[:3]) # Çıktı: ['a', 'b', 'c'] # Index 4'ten başlayarak sona kadar al. print(harfler[4:]) # Çıktı: ['e', 'f', 'g'] |
3. Kapsamlı Liste Metotları
Listelerin değiştirilebilir yapısı, dahili metotlarla kolayca yönetilmesini sağlar. İşte en sık kullanılan ve güçlü liste metotları:
A. Ekleme Metotları
| Metot | Açıklama | Örnek Uygulama |
.append(öğe) | Listenin sonuna tek bir öğe ekler. | liste.append(5) |
.insert(index, öğe) | Belirtilen indekse öğe ekler. Diğer öğeler sağa kayar. | liste.insert(1, 99) |
.extend(iterable) | Başka bir listenin veya yinelenebilir bir nesnenin (iterable) tüm öğelerini mevcut listenin sonuna ekler. | liste.extend([6, 7]) |
B. Silme Metotları
| Metot | Açıklama | Örnek Uygulama |
.remove(değer) | Belirtilen değere sahip olan ilk öğeyi listeden kaldırır. | liste.remove(3) |
.pop(index) | Belirtilen indeksteki öğeyi listeden kaldırır ve geri döndürür (return eder). İndeks belirtilmezse son öğeyi kaldırır. | silinen = liste.pop(2) |
del anahtar kelimesi | Belirtilen indeks veya dilimi siler. | del liste[0] veya del liste[1:3] |
.clear() | Listenin tüm içeriğini siler, liste boş kalır. | liste.clear() |
C. Düzenleme ve Sorgulama Metotları
| Metot | Açıklama | Örnek Uygulama |
.index(değer, start, end) | Belirtilen değerin bulunduğu ilk indeks numarasını döndürür. Değer bulunamazsa hata verir. Opsiyonel olarak arama aralığı belirlenebilir. | indeks = liste.index('b') |
.count(değer) | Listede belirtilen değerin kaç kez tekrar ettiğini sayar. | tekrar_sayisi = liste.count(5) |
.sort(reverse=True) | Listeyi yerinde (orijinal listeyi değiştirerek) sıralar. reverse=True ile ters sıralama yapılabilir. | liste.sort() |
.reverse() | Listenin öğelerinin sırasını yerinde tersine çevirir. | liste.reverse() |
len(liste) fonksiyonu | Listenin sahip olduğu toplam öğe sayısını (uzunluğunu) döndürür. (Bu bir metot değil, yerleşik bir fonksiyondur.) | uzunluk = len(liste) |
Uygulama Örneği
Yukarıda vermiş olduğumuz Python Liste metotlarının nasıl kullanılacağı ile ilgili örneklerimizi oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Başlangıç listesi my_list = [5, 1, 3, 1, 4] # 1. Listenin sonuna 7 ekle my_list.append(7) # my_list şimdi: [5, 1, 3, 1, 4, 7] # 2. Listeyi küçükten büyüğe sırala my_list.sort() # my_list şimdi: [1, 1, 3, 4, 5, 7] # 3. Listeden ilk 1 değerini kaldır my_list.remove(1) # my_list şimdi: [1, 3, 4, 5, 7] # 4. Listenin 2. indeksindeki (değeri 4) öğeyi kaldır ve döndür cikarilan_deger = my_list.pop(2) # my_list şimdi: [1, 3, 5, 7], cikarilan_deger: 4 print(f"Final Liste: {my_list}") # Çıktı: Final Liste: [1, 3, 5, 7] print(f"Listede kaç tane 3 var: {my_list.count(3)}") # Çıktı: Listede kaç tane 3 var: 1 |
Örnek uygulamalar:
Örnek 1: .extend() ve + Operatörünün Farkı
İki listeyi birleştirmenin iki yaygın yolu vardır: .extend() metodu ve + operatörü.
.extend(): Var olan listeyi yerinde (in-place) değiştirir.+Operatörü: Yeni bir liste oluşturur, orijinal listeleri değiştirmez.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | liste_a = [10, 20] liste_b = [30, 40] # 1. extend() kullanımı (Liste A'yı değiştirir) liste_a.extend(liste_b) print(f"Extend sonrası Liste A: {liste_a}") # Çıktı: [10, 20, 30, 40] print(f"Liste B: {liste_b}") # Çıktı: [30, 40] (Değişmedi) liste_c = [1, 2] liste_d = [3, 4] # 2. + operatörü kullanımı (Yeni bir liste oluşturur) liste_yeni = liste_c + liste_d print(f"+ sonrası Yeni Liste: {liste_yeni}") # Çıktı: [1, 2, 3, 4] print(f"Liste C: {liste_c}") # Çıktı: [1, 2] (Değişmedi) |
Örnek 2: .pop() ile Son Elemanı Çıkarma ve Kullanma
.pop() metodu, bir öğeyi silmekle kalmaz, aynı zamanda sildiği öğeyi döndürür. Bu, bir listeden son öğeyi alıp başka bir işlemde kullanmak istediğinizde çok faydalıdır (Özellikle “stack” yapısı oluştururken).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | gorevler = ["Mail Gönder", "Rapor Yaz", "Toplantıya Katıl", "Öğle Yemeği"] # Son eklenen görevi listeden çıkar ve değişkene ata acil_gorev = gorevler.pop() print(f"Kaldırılan Görev: {acil_gorev}") # Çıktı: Kaldırılan Görev: Öğle Yemeği print(f"Kalan Görevler: {gorevler}") # Çıktı: Kalan Görevler: ['Mail Gönder', 'Rapor Yaz', 'Toplantıya Katıl'] # Belirli bir indeksteki öğeyi kaldırma planli_cikarma = gorevler.pop(0) print(f"0. indeksten çıkarılan: {planli_cikarma}") # Çıktı: 0. indeksten çıkarılan: Mail Gönder |
Örnek 3: .index() ve .count() ile Veri Sorgulama
Bu metotlar, listedeki öğelerin varlığını, tekrar sayısını ve konumunu hızlıca kontrol etmek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | puanlar = [85, 92, 78, 92, 88, 92] # 1. 92'nin listede kaç kez tekrar ettiğini bulma tekrar = puanlar.count(92) print(f"92 puanı {tekrar} kez tekrar etti.") # Çıktı: 92 puanı 3 kez tekrar etti. # 2. İlk 92'nin hangi indekste olduğunu bulma ilk_yer = puanlar.index(92) print(f"İlk 92'nin indeksi: {ilk_yer}") # Çıktı: İlk 92'nin indeksi: 1 # 3. Belirli bir aralıkta arama (Index 3'ten itibaren) # [85, 92, 78, 92, 88, 92] -> Index 3'ten sonraki ilk 92, Index 3'te sonraki_yer = puanlar.index(92, 3) print(f"Index 3'ten sonraki ilk 92'nin indeksi: {sonraki_yer}") # Çıktı: Index 3'ten sonraki ilk 92'nin indeksi: 3 # NOT: puanlar.index(100) çağrılırsa, 'ValueError' hatası fırlatılır. |
Örnek 4: .sort() ile Gelişmiş Sıralama
.sort() metodu, yalnızca sayıları değil, dizeleri (string) veya karmaşık nesneleri de sıralayabilir. Ayrıca, key parametresi ile özel sıralama kuralları tanımlanabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | kelimeler = ["elma", "Kiraz", "muz", "Portakal", "Ayva"] # Varsayılan sıralama (Büyük/küçük harf duyarlı) kelimeler.sort() print(f"Varsayılan Sıralama: {kelimeler}") # Çıktı: ['Ayva', 'Kiraz', 'Portakal', 'elma', 'muz'] (Büyük harfle başlayanlar önce gelir) # 1. Harf büyüklüğünü yok sayarak sıralama (key=str.lower) kelimeler.sort(key=str.lower) print(f"Harf Duyarsız Sıralama: {kelimeler}") # Çıktı: ['Ayva', 'elma', 'Kiraz', 'muz', 'Portakal'] # 2. Uzunluğa göre sıralama (key=len) kelimeler.sort(key=len) print(f"Uzunluğa Göre Sıralama: {kelimeler}") # Çıktı: ['muz', 'Ayva', 'elma', 'Kiraz', 'Portakal'] |
