Python’da Listeler
Python’da listeler; tuple, set ve dictionary ile beraber platformda gömülü halde bulunan ve veri koleksiyonlarını depolamak için kullanılan dört veri tipinden biridir. Biz bu yazımızda ise Python’daki listelerin ne tür özellikleri olduğunu, nasıl oluşturulup kullanıldığını adım adım inceleyeceğiz.
Python’da Liste Bildirimi
Python’daki liste, birden çok elemanı bir arada tutmamıza olanak tanıyan sıralı bir koleksiyondur. Bu koleksiyonlar, her biri benzersiz bir indekse sahip olan elemanlardan oluşur. Bunun ne derece önemli bir özellik olduğunu şu şekilde anlatayım.
Malumunuz, programlamada “değişkenler” (variables), verileri tutmak için kullandığımız temel araçlardır. Ancak, her bir değişken sadece bir değer tutabilir. Örneğin, bir öğrencinin sadece bir notunu saklamak istiyorsanız, bir değişken yeterli olabilir:
not1 = 85
Ancak bir sınıftaki tüm öğrencilerin notlarını tutmanız gerektiğinde, her bir not için ayrı ayrı değişken oluşturmak zorunda kalırsınız. Bu durum bir süre sonra karmaşıklaşır ve yönetmesi zor hale gelir:
not1 = 85
not2 = 90
not3 = 78
not4 = 92
Bu gibi durumlarda, değişkenler yetersiz kalır çünkü yüzlerce ya da binlerce değeri tutmak için çok fazla değişken oluşturmak zorunda kalırız. İşte burada listeler devreye girer. Listeler, Python’da birden fazla değeri tek bir veri yapısında saklamamızı sağlar. Bu sayede birçok değeri aynı anda bir arada tutabiliriz ve bu değerlere kolayca erişebiliriz. Örneğin, bir sınıftaki öğrencilerin tüm notlarını bir listede saklayarak şu şekilde yönetebiliriz:
notlar = [85, 90, 78, 92]
İşte göreceğiniz üzere, listeler bir dizi değişken oluşturma zorunluluğunu ortadan kaldırır ve veriler üzerinde toplu işlem yapmayı kolaylaştırır. Tek bir değişken olan notlar
ile birçok değeri içinde barındırabiliyoruz.
Bitti mi? Hayır tabi ki. Sahip olduğu dinamik yapısı sayesinde listelere yeni öğeler ekleyebilir, çıkarabilir ve mevcut öğeler üzerinde değişiklik yapabiliriz. Bu özellikleri peyderpey inceleyelim.
Python’da listeler tanımlamak için köşeli parantezler []
kullanılır ve içindeki her bir eleman birbirlerinden virgül ile ayrılır. Örneğin, farklı meyve isimlerini bir liste içinde saklamak istediğimizi düşünelim. Bunu aşağıdaki gibi yaparız:
fruit = ["elma", "muz", "portakal"]
Bu kod parçası ile meyveler adında bir liste oluşturduk. Bu liste içerisinde sırasıyla “elma”, “muz” ve “portakal” elemanları bulunmaktadır. Bu elemanlara indeks numaralarıyla erişebiliriz.
Python’da indeks numarası sıfırdan başlar. Bu durumu örneğimiz üzerinden gösterelim; “elma” meyvesinin indeksi 0, “muz”un indeksi 1 ve “portakal”ın indeksi ise 2’dir. Yani kafanızda bunu şöyle canlandırabilirsiniz: [“elma”0, “muz”1, “portakal”2]
Listeler, sadece metinsel veri tiplerini (string) değil, diğer tüm veri tiplerini de (sayılar, diğer listeler, nesneler vb.) saklayabilir. Hatta aynı liste içinde farklı veri türlerini de tutabilirsiniz. Bir öğrencinin adını, yaşını, not ortalamasını ve geçip geçmediğini aşağıdaki gibi bir listede tutabilirsiniz:
student = ["John", 20, 85.6, True]
Bu esnek yapı, listeleri veri saklama ve manipülasyonunda oldukça kullanışlı kılar. Özellikle birçok benzer veriyle çalışırken bu veriler üzerinde işlem yapmak için listeleri kullanmak son derece verimlidir.
Python’da listeler, değiştirilebilir (mutable) bir yapıya sahip oldukları için indeks numaralarını kullanarak sahip oldukları elemanları değiştirebiliriz. Örneğin:
# Başlangıçta bir renk listesi oluşturalım
renkler = ["kırmızı", "mavi", "kahverengi"]
# Liste içerisindeki "mavi" rengini "sarı" ile değiştirelim
renkler[1] = "sarı"
# Değişiklikten sonra listeyi yazdıralım
print(renkler)
# Çıktı: ["kırmızı", "sarı", "kahverengi"]
O halde, tek bir cümle kurarak Python’da listelerin ne olduğunu şu şekilde özetleyebiliriz: Listeler, köşeli parantezler içerisinde ([]
) virgülle ayrılmış elemanlardan oluşan, sıralı, değiştirilebilir, herhangi bir veri türünde ve yinelenen değerlerde olabilen veri koleksiyonlarıdır.
Python’da Liste Elemanlarına Nasıl Erişebiliriz?
Yukarıda da anlattığımız üzere, listedeki elemanların benzersiz bir indeks numarasına sahip olduğunu ve bunlara başvurarak liste elemanlarına ulaşabileceğimizden bahsetmiştik. Bu başlıkta biraz daha detaylara ineceğiz.
Bazı durumlarda, listenin kaç tane elemana sahip olduğunu bilemeyebiliriz ve böylesi durumlarda listenin sonundaki elamana erişmek için uzunca işlemler yapmamız gerekecektir. Python bize bu işlemi kolayca yapabilme imkanı vermektedir; eğer listenin en sonundaki elemana ulaşmak istiyorsak indeks numarasını -1 yaparız. Özetle:
- Listedeki ilk elemanın indeksi ➡️ 0
- Listedeki son elamanın indeksi ➡️ -1
meyveler = ["elma", "armut", "muz"]
print(meyveler[-1])
# çıktı: muz
Yani bu demektir ki, tersten bir sıralama yaparken “-1, -2, -3 …” şeklinde negatif sayıları kullanabiliriz.
Python’da “For” Döngüsü ile Liste Kullanımı
Python’da liste üzerinde gezinmek ve listelerdeki her bir elemanı işlemek için “for” döngüsü sıkça tercih edilir. Zira “for” döngüsü, listede kaç eleman varsa o kadar tur atacaktır. Bunu yapabilmek için kullanılan syntax ise şu şekildedir:
for eleman in liste:
# Yapılacak işlemler
Meyvelerin eklendiği listeler üzerinde gezinip her bir meyveyi şu şekilde yazdırabiliriz:
meyveler = ["elma", "muz", "kiraz", "üzüm"]
for meyve in meyveler:
print(meyve)
"""
elma
muz
kiraz
üzüm
"""
Bazen elemanlara erişirken indeks numaralarını da kullanmak isteyebiliriz. Bu durumda enumerate
fonksiyonunu kullanabiliriz. Bakınız:
meyveler = ["elma", "muz", "kiraz", "üzüm"]
for indeks, meyve in enumerate(meyveler):
print(f"Indeks: {indeks}, Meyve: {meyve}")
"""
Indeks: 0, Meyve: elma
Indeks: 1, Meyve: muz
Indeks: 2, Meyve: kiraz
Indeks: 3, Meyve: üzüm
"""
Bu yapıyı örnek bir senaryoda gösterelim. Diyelim ki, bir kitapçıda çeşitli yazarlara ait kitaplar bulunmakta ve biz de her bir kitabın yazarını, kitap adını ve fiyatını tek bir listede saklamak istiyoruz. Sonrasında da bu listeyi kullanarak belli bir fiyatın altındaki kitapları ve yazarlarını ekrana yazdıracağız. Bunu aşağıdaki gibi yapabiliriz:
# Kitapçıdaki kitaplar ve bilgileri
kitaplar = [
{'yazar': 'Orhan Pamuk', 'kitap': 'Kar', 'fiyat': 35},
{'yazar': 'Franz Kafka', 'kitap': 'Dava', 'fiyat': 25},
{'yazar': 'George Orwell', 'kitap': '1984', 'fiyat': 30},
{'yazar': 'J.R.R. Tolkien', 'kitap': 'Yüzüklerin Efendisi', 'fiyat': 50}
]
# Belirli bir fiyatın altındaki kitapları ekrana yazdıralım
belirli_fiyat = 30
for kitap in kitaplar:
if kitap['fiyat'] < belirli_fiyat:
print(f"{kitap['kitap']} - {kitap['yazar']} - {kitap['fiyat']} TL")
# Çıktı: Dava - Franz Kafka - 25 TL
Listenin içinde farklı veri tipleri (sayılar, stringler, listeler vb.) olabilir. “For” döngüsü ile bu veri tiplerini de rahatlıkla işleyebiliriz. Örneğin: “Bir öğretmen, her bir öğrencinin ismi, notları ve katıldığı kulüpleri aynı listede saklamaktadır. Öğretmen, bu listeyi kullanarak her bir öğrencinin adını, not ortalamasını ve katıldığı ilk kulübü ekrana yazdırmak istemektedir.” Bunu aşağıdaki gibi kodlayabiliriz:
# Sınıftaki öğrencilerin bilgileri
ogrenciler = [
{"isim": "Ali", "notlar": [85, 90, 78], "kulupler": ["Satranç", "Futbol"]},
{"isim": "Ayşe", "notlar": [70, 65, 80], "kulupler": ["Basketbol"]},
{"isim": "Mehmet", "notlar": [92, 88, 95], "kulupler": ["Satranç", "Müzik", "Drama"]},
]
for ogrenci in ogrenciler:
not_ortalamasi = sum(ogrenci["notlar"]) / len(ogrenci["notlar"])
ilk_kulup = ogrenci["kulupler"][0] if ogrenci["kulupler"] else "Katıldığı kulüp yok"
print(f"{ogrenci['isim']} - Not Ortalaması: {not_ortalamasi:.2f} - İlk Katıldığı Kulüp: {ilk_kulup}")
"""
Ali - Not Ortalaması: 84.33 - İlk Katıldığı Kulüp: Satranç
Ayşe - Not Ortalaması: 71.67 - İlk Katıldığı Kulüp: Basketbol
Mehmet - Not Ortalaması: 91.67 - İlk Katıldığı Kulüp: Satranç
"""
Yukarıdaki örneğimizde, farklı veri tiplerinin (string, liste, sayı) aynı ana veri yapısı içerisinde nasıl saklandığını ve “for” döngüsü ile nasıl işlendiğini görmüş olduk.
Python’da Liste Metotları
Python, listelerle beraber kullanılabilecek gömülü halde gelen birtakım metotlara (fonksiyon) sahiptir. Aşağıdaki tabloda bunlar derlenmiştir:
Metot | Görevi |
---|---|
append() | Listenin sonuna yeni bir eleman (liste vb…) ekler |
meyve = ['çilek', 'vişne', 'ahududu'] a = ["elma", "armut", "ayva"] | |
clear() | Listedeki tüm elemanları siler |
yeni_meyve = ['çilek', 'vişne', 'ahududu'] yeni_meyve.clear() #liste elemanlarını komple sildi | |
copy() | Listenin bir kopyasını döndürür |
ikinci_meyve = ['çilek', 'vişne', 'ahududu'] x= ikinci_meyve.copy() #liste elemanlarını kopyaladı | |
count() | Belirtilen elemanın kaç tane olduğunu döndürür |
ucuncu_meyve = ['çilek', 'vişne', 'ahududu', 'vişne'] y= ucuncu_meyve.count("vişne") #listedeki belirtilen elemanın kaç tane olduğunu buldu | |
extend() | Bir listeye bir başka listenin elemanlarını ekler |
dorduncu_meyve = ['elma', 'armut', 'ayva'] arabalar = ['Ford', 'BMW', 'Volvo']dorduncu_meyve.extend(arabalar) | |
index() | Belirtilen elemanın ilk bulunduğu indeksi döndürür |
besinci_meyve = ['elma', 'armut', 'ayva', "armut", "ayva" ] k= besinci_meyve.index("ayva") | |
insert() | Belirtilen elemanı belirtilen indekse ekler |
altinci_meyve = ['elma', 'armut', 'ayva', "armut"] altinci_meyve.insert(1, "kayısı") | |
pop() | Belirtilen konumdaki elemanı kaldırır |
yedinci_meyve = ['elma', 'armut', 'ayva', "armut"] yedinci_meyve.pop(1) | |
remove() | Belirtilen elemanın ilk olanını kaldırır |
sekizinci_meyve = ['elma', 'armut', 'ayva', "armut"] sekizinci_meyve.remove("armut") | |
reverse() | Listenin sırasını tersine çevirir |
sayilar = [0, 5, 3,2, 4, 3, 35] sayilar.sort() | |
sort() | Listeyi (alfabetik ya da sayısal) sıralar |
kelimeler = ["a", "araba", "anı", "burs", "ülke", "ücra"] kelimeler.sort() |
Python’da Listeler Nasıl Birleştirilir?
Python’da listeleri birleştirmek için çeşitli yöntemler bulunmaktadır. Bunları madde madde inceleyelim:
1. artı (+) operatörü ile listeleri birleştirebiliriz. Bu operatör sayesinde listelerin elemanları tek bir liste olarak döner. Örneğin:
liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
birlesik_liste = liste1 + liste2
print(birlesik_liste) # Çıktı: [1, 2, 3, 4, 5, 6]
2. extend() metodunu kullanarak liste elemanlarını tek bir listede kullanabiliriz.
liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
liste1.extend(liste2)
print(liste1) # Çıktı: [1, 2, 3, 4, 5, 6]
3. Listeleri birleştirmek adına “for” döngüsü ile bir listeyi diğerine append()
metodu ile ekleyebiliriz. Ancak bu yöntem genellikle daha karmaşık veya özel ihtiyaçlar için kullanılır. Basit birleştirme işlemleri için +
operatörü veya extend()
metodu daha pratik olabilir.
liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
for eleman in liste2:
liste1.append(eleman)
print(liste1) # Çıktı: [1, 2, 3, 4, 5, 6]
Python Liste Örnekleri
Konu anlatımımızı bitirdiğimize göre sıra geldi çeşitli zorluk seviyelerinde liste örneklerini kodlamaya. Her bir soru maddeler halinde derlenmiştir:
1. Liste Elemanlarının Ortalaması
def ortalama_bul(liste):
toplam = 0
for eleman in liste:
toplam += eleman
return toplam / len(liste)
ornek_liste = [1, 2, 3, 4, 5]
print("Ortalama:", ortalama_bul(ornek_liste))
#Çıktı: Ortalama: 3.0
2. Listedeki En Büyük ve En Küçük Elemanı Bulma
def en_buyuk_ve_en_kucuk(liste):
en_buyuk = liste[0]
en_kucuk = liste[0]
for eleman in liste:
if eleman > en_buyuk:
en_buyuk = eleman
elif eleman < en_kucuk:
en_kucuk = eleman
return en_buyuk, en_kucuk
ornek_liste = [3, 1, 4, 1, 5, 9, 2, 6]
buyuk, kucuk = en_buyuk_ve_en_kucuk(ornek_liste)
print("En Büyük:", buyuk) # çıktı: En Büyük: 9
print("En Küçük:", kucuk) # çıktı: En Küçük: 1
3. Listeyi Ters Çevirme
def listeyi_ters_cevir(liste):
ters_liste = []
for eleman in reversed(liste):
ters_liste.append(eleman)
return ters_liste
ornek_liste = [1, 2, 3, 4, 5]
print("Ters Liste:", listeyi_ters_cevir(ornek_liste))
#çıktı: Ters Liste: [5, 4, 3, 2, 1]
4. Listedeki Tek Sayılar
def tek_sayilari_bul(liste):
tek_sayilar = []
for eleman in liste:
if eleman % 2 == 1:
tek_sayilar.append(eleman)
return tek_sayilar
ornek_liste = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print("Tek Sayılar:", tek_sayilari_bul(ornek_liste))
#Çıktı: Tek Sayılar: [1, 3, 5, 7, 9]
5. Listede Tekrar Eden Elemanın Tekrar Etme Sayısı
def eleman_sayisi(liste, aranan):
sayac = 0
for eleman in liste:
if eleman == aranan:
sayac += 1
return sayac
ornek_liste = [1, 2, 3, 4, 3, 5, 3, 6]
aranan = 3
print(f"{aranan} sayısının listeye tekrar etme sayısı:", eleman_sayisi(ornek_liste, aranan))
#Çıktı: 3 sayısının listeye tekrar etme sayısı: 3
6. Listedeki Toplam Eleman Sayısı
def toplam_eleman_sayisi(liste):
sayac = 0
for eleman in liste:
sayac += 1
return sayac
ornek_liste = [3, 1, 4, 1, 5, 9, 2, 6]
eleman_sayisi = toplam_eleman_sayisi(ornek_liste)
print("Listedeki Toplam Eleman Sayısı:", eleman_sayisi)
#Çıktı: Listedeki Toplam Eleman Sayısı: 8