Liste (list), bir başlık altında toplanmış değişkenler dizisidir. Pek çok farklı değişkenlerle, x0
, x1
, x2
, … gibi, bir program yazmak yerine, tek bir değişken tanımlayabilir ve böylece onun tüm üyelerine erişebiliriz x[0]
, x[1]
, x[2]
, vb. Daha da önemlisi, köşeli parantez içinde diğer ifade ve değişkenleri yerleştirebiliriz, x[i]
and x[i+1]
, gibi. Bu şekilde, sadece küçük bir kod parçası kullanarak büyük miktarda veri kümeleriyle başa çıkabiliriz.
Liste oluşturmanın yollarından biri, bir miktar değeri aralarına virgül koymak suretiyle köşeli parantez içine almaktır:
benimListem = ["Listedeki ilk değer", 1999, 4.5]Bu şekilde uzunluğu (len) 3 olan
benimListem
adlı bir liste oluşturduk. Bu listenin her bir elemanının index adı verdiğimiz bir numarası vardır: ilk eleman index 0, bir sonraki index 1, şeklinde devam eder. Listeyi oluşturan bireysel değişkenlerin isimleri vardır.
«listeAdı»[«indeksNumarası»]
Bu örnekte, benimListem [0]
karşılığı "Listedeki ilk değer"
olan bir stringdir ve print(benimListem[2])
print komutu da 4.5
değerini yazdırır. Listedeki itemlerin değerlerini değiştirebilir ve tüm listeleri yazdırabilirsiniz:
Gördüğünüz gibi, sayılar[0]
sanki bir değişkenmiş gibi işleme kondu: Bir değere karşılık geliyor ve bu değer değiştirilebiliyor.
Şimdi, aşağıda görüntülenen örneğn son aşamasını tahmin etmeye çalışın, sonra kodu çalıştırıp tahmininiz doğru çıkacak mı bakın.
stuff = [2, 25, 80, 12]
stuff[stuff[0]] = stuff[3]
print(stuff)
stuff[3]
elemanının değeri 12
. Sol taraftaki stuff[0]
ise 2
, yani stuff[stuff[0]]
değişkeni stuff[2]
elemanına karşılık gelir. Bu elemanın değeri (80
'den) 12
'ye güncellendi.Python'da liste "list" adı verilen yapı diğer pek çok programlama dilinde array adıya anılır. Python'da array olarak anılan daha gelişmiş ve farklı bir şey vardır. |
Yaygın Bir Hata
Python'da kod yazarken olmayan bir indeksi sorarsanız hata alırsınız:
Verdiğimiz örnekteki benimListem
uzunluğu (len) 4 olan bir listedir ve ilk index 0 olduğu için, en yüksek indeks 3 olabilir. 4 ve üzeri bir indeks çağırmak böyle bir hatayla sonuçlanır.
Kullanışlı İşlemler
Bir Listenin Uzunluğu: len(«list»)
Listede bulanan birimlerin sayısını bulmak için len()
fonksiyonu kullanılır. Aşağıdaki örnekte range
yapısının nasıl kullanıldığına bakalım.
Farklı uzunluktuktaki listelerle çalışırken len
fonksiyonunu sıkça kullanırız. Aşağıdaki örneklerde bu kullanımlara bakalım.
Listeler ve Stringlere benzer mi?
Bu noktada, listeler üzerinde yaptığımız işlemlerin stringlerde de yapıldığını farketmiş olmalısınız: örneğin len()
fonksiyonunu ikisinin de uzunluğunu bulmak için kullanırız, ve X[«index»]
ile belli bir elementi çağırabiliriz. Listeler ve stringler gerçekten de benzerdirler: ikisi de Python'daki "dizi tipleri"dir. Aralarındaki en önemli fark ise stringlerin elementleri değiştirilemez.
Bu sebeple listeler değişebilir mutable tipte iken stringler değişmez immutable tiptedir; 17. derste bununla ilgili biraz daha bilgi edineceğiz.
Birleştirme ve Oluşturma
str
tipini gördüğümüz dersten hatırlayacağınız gibi iki stringi birleştirmek (concatenate) için +
kullanabiliyorduk. Aynı şeyi listelerle de yapabiliriz:
Benzer şekilde, çarpı *
işareti de listelerin tekrarlanması ile genişlemesini sağlar. Bu, istenilen uzunlukta liste oluşturmaya yarar.
Şimdiki alıştırmayı çözmek için bu operatörlerden birinin yanı sıra for
döngüsü kullanmanız gerekecek.
Satır Sonu: Negatif İndeksler
Bir listedeki en son elemeti çağırmak için kullanacağımız indeks:
«listeAdı»[-1]
Genel olarak, L[-k]
dediğimizde listenin sonunda k
.ıncı elementi çağırmış oluruz; Python bunu kendi içinde şöyle tercüme eder L[len(L)-k]
. Bu kısa yol stringlerde de çalışır!
max
vesum
Daha önce gördüğümüz max
fonksiyonu sayı isteleriyle de kullanılabilir: Listedeki en büyük sayıyı verir. Benzer şekilde sum(L)
fonksiyonu da L
listesindeki elementlerin toplam değerini verir.
Listelerle döngüler
Bir listedeki tüm elementleri döndürmek (önceki alıştırmadaki gibi) çok sık kullanılan bir yöntemdir. Python'da bu tip işlemleri yapmak için kısa yollar bulunur, bunlara da genellikle"for all (hepsi için)" döngüsü veya "for each (her biri için)" döngüsü adı verilir. Özellikle, L listesinde bu kod
for x in L: «döngü gövdesi bloğu»şu işlemi yapar: önce
x
, L
listesindeki ilk element olarak belirlenir ve gövde işleme konur; daha sonraki adımda x
, L
listesindeki ikinci element olarak belirlenir ve gövde işleme konur; L
. listesindeki tüm elementler için bu şekilde devam eder.
Burada bir listedeki tüm elementlerin yazdırıldığı bir örnek görüyorsunuz:
"For all" döngüleri stirnglerle de kullanılır: şunu deneyinfor harf in "selam"
.
Bravo! Artık sonraki derse geçebilirsiniz, veya aşağıdaki bonus alıştırmaları da yapın.
gizem(x)
fonksiyonunun sonsuz döngüye girmesine sebep olan x
hangi değere sahiptir?
def gizem(x):
a = [0, 4, 0, 3, 2]
while x > 0:
x = a[x]
return "Tamamdır"