Hatırlarsanız bir veri tipinin hangi metotlara sahip olduğunu görmek için dir()
fonksiyonundan yararlanıyorduk.
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop',
'remove', 'reverse', 'sort']
Bu listede bizi ilgilendiren metotlar ise şunlardır:
>>> [i for i in dir(list) if not "_" in i]
['append', 'clear', 'copy', 'count', 'extend', 'index',
'insert', 'pop', 'remove', 'reverse', 'sort']
append()
metoduyla başlayalım…
append()
append kelimesi İngilizcede ‘eklemek, ilave etmek, iliştirmek’ gibi anlamlara gelir. append()
metodunun görevi de kelime anlamıyla uyumludur. Bu metodu, bir listeye öğe eklemek için kullanıyoruz. Mesela:
>>> liste = ["elma", "armut", "çilek"]
>>> liste.append("erik")
Bu metot, yeni öğeyi listenin en sonuna ekler.
Hatırlarsanız bir önceki bölümde listeye öğe ekleme işini + işleci ile de yapabileceğimizi söylemiştik.
>>> liste = ["elma", "armut", "çilek"]
>>> liste = liste + ["erik"]
>>> print(liste)
['elma', 'armut', 'çilek', 'erik']
+ işleci ile append()
metodu işlev olarak birbirine benzese de bu iki yöntem arasında önemli farklılıklar da vardır. Mesela şu örneğe bir göz atalım:
işletim_sistemleri = ["Windows", "GNU/Linux", "Mac OS X"]
platformlar = ["IPhone", "Android", "S60"]
hepsi = işletim_sistemleri + platformlar
print(hepsi)
['Windows', 'GNU/Linux', 'Mac OS X', 'IPhone', 'Android', 'S60']
Burada iki farklı listeyi, + işleci kullanarak birleştirdik. Aynı işi append()
metoduyla şu şekilde yapabiliriz:
işletim_sistemleri = ["Windows", "GNU/Linux", "Mac OS X"]
platformlar = ["IPhone", "Android", "S60"]
for i in platformlar:
işletim_sistemleri.append(i)
print(işletim_sistemleri)
Burada platformlar adlı liste üzerinde bir for
döngüsü kurmamızın nedeni, append()
metodunun yalnızca tek bir parametre alabilmesidir. Yani bu metodu kullanarak bir listeye birden fazla öğe ekleyemezsiniz:
>>> liste = [1, 2, 3]
>>> liste.append(4, 5, 6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (3 given)
Diyelim ki kullanıcının girdiği bütün sayıları birbiriyle çarpan bir uygulama yazmak istiyoruz. Bunun için şöyle bir kod yazabiliriz:
sonuç = 1
while True:
sayı = input("sayı (hesaplamak için q): ")
if sayı == "q":
break
sonuç *= int(sayı)
print(sonuç)
Kullanıcı 2’den az sayı girerse de programımız yanlış sonuç verecektir. Kullanıcının yeterli miktarda sayı girip girmediğini tespit edebilmek için yine listelerden ve listelerin append()
metodundan yararlanabiliriz:
kontrol = []
sonuç = 1
while True:
sayı = input("sayı (hesaplamak için q): ")
if sayı == "q":
break
kontrol.append(sayı)
sonuç *= int(sayı)
if len(kontrol) < 2:
print("Yeterli sayı girilmedi!")
else:
print(sonuç)
append()
metodu listelerin en önemli metotlarından biridir. Hem kendi yazdığınız, hem de başkalarının yazdığı programlarda append()
metodunu sıkça göreceksiniz.
extend()
extend kelimesi İngilizcede ‘genişletmek, yaymak’ gibi anlamlara gelir. İşte extend()
adlı metot da kelime anlamına uygun olarak listeleri ‘genişletir’.
append()
metodunu kullanarak yazdığımız şu koda dikkatlice bakın:
li1 = [1, 3, 4]
li2 = [10, 11, 12]
li1. append(li2)
print(li1)
append()
metodunu anlatırken söylediğimiz gibi, bu metot bir listeye her defasında sadece tek bir öğe eklenmesine izin verir. Yani yukarıdaki kodlar size şöyle bir çıktı verecektir:
[1, 3, 4, [10, 11, 12]]
İşte extend()
metodu bu tür durumlarda işinize yarayabilir.
li1 = [1, 3, 4]
li2 = [10, 11, 12]
li1. extend(li2)
print(li1)
Bu defa şöyle bir çıktı alıyoruz:
[1, 3, 4, 10, 11, 12]
Gördüğünüz gibi, extend()
metodu tam da kelime anlamına uygun olarak listeyi yeni öğelerle genişletti.
insert()
insert kelimesi ‘yerleştirmek, sokmak’ gibi anlamlara gelir. insert()
metodu da bu anlama uygun olarak, öğeleri listenin istediğimiz bir konumuna yerleştirir.
>>> liste = ["elma", "armut", "çilek"]
>>> liste.insert(0, "erik")
>>> print(liste)
['erik', 'elma', 'armut', 'çilek']
Gördüğünüz gibi insert()
metodu iki parametre alıyor. İlk parametre, öğenin hangi konuma yerleştirileceğini, ikinci parametre ise yerleştirilecek öğenin ne olduğunu gösteriyor.
remove()
Bu metot listeden öğe silmemizi sağlar. Örneğin:
>>> liste = ["elma", "armut", "çilek"]
>>> liste.remove("elma")
>>> liste
['armut', 'çilek']
reverse()
Python’da listelerin öğelerini ters çevirmek için listelerin reverse()
metodunu kullanabilirsiniz:
>>> liste = ["elma", "armut", "çilek"]
>>> liste.reverse()
>>> liste
['çilek', 'armut', 'elma']
pop()
Tıpkı remove()
metodu gibi, bu metot da bir listeden öğe silmemizi sağlar:
>>> liste = ["elma", "armut", "çilek"]
>>> liste.pop()
Bu metot parametresiz olarak kullanıldığında listenin son öğesini listeden atar. Alternatif olarak, bu metodu bir parametre ile birlikte de kullanabilirsiniz. Örneğin:
>>> liste.pop(0)
Bu komut listenin 0. öğesini listeden atar ve atılan öğeyi ekrana basar.
sort()
sort()
adlı bu önemli metot bir listenin öğelerini belli bir ölçüte göre sıraya dizmemizi sağlar. Diyelim ki elimizde şöyle bir liste var:
üyeler = ['Ahmet', 'Mehmet', 'Ceylan', 'Seyhan', 'Mahmut', 'Zeynep',
'Abdullah', 'Kadir', 'Kemal', 'Kamil', 'Selin', 'Senem',
'Sinem', 'Tayfun', 'Tuna', 'Tolga']
Bu listedeki isimleri mesela alfabe sırasına dizmek için sort()
metodunu kullanabiliriz:
>>> üyeler.sort()
>>> print(üyeler)
['Abdullah', 'Ahmet', 'Ceylan', 'Kadir', 'Kamil', 'Kemal', 'Mahmut',
'Mehmet', 'Selin', 'Senem', 'Seyhan', 'Sinem', 'Tayfun', 'Tolga',
'Tuna', 'Zeynep']
Bu metot elbette yalnızca harfleri alfabe sırasına dizmek için değil sayıları sıralamak için de kullanılabilir:
>>> sayılar = [1, 0, -1, 4, 10, 3, 6]
>>> sayılar.sort()
>>> print(sayılar)
[-1, 0, 1, 3, 4, 6, 10]
Gördüğünüz gibi, sort()
metodu öğeleri artan sıralamaya tabi tutuyor. Yani öğeler ‘a, b, c’ veya 1, 2, 3 şeklinde sıralanıyor. Bunun tersini yapmak da mümkündür.
Bunun için sort()
metodunun reverse parametresini kullanacağız:
>>> üyeler = ['Ahmet', 'Mehmet', 'Ceylan', 'Seyhan', 'Mahmut', 'Zeynep',
'Abdullah', 'Kadir', 'Kemal', 'Kamil', 'Selin', 'Senem',
'Sinem', 'Tayfun', 'Tuna', 'Tolga']
>>> üyeler.sort(reverse=True)
index()
Bu metot bir liste öğesinin liste içindeki konumunu söyler bize:
>>> liste = ["elma", "armut", "çilek"]
>>> liste.index("elma")
0
Karakter dizilerinin index()
metoduyla ilgili söylediğimiz her şey listelerin index()
metodu için de geçerlidir.
count()
Tıpkı karakter dizilerinde olduğu gibi, listelerin count()
metodu da bir öğenin o veri tipi içinde kaç kez geçtiğini söyler:
>>> liste = ["elma", "armut", "elma", "çilek"]
>>> liste.count("elma")
2
Karakter dizilerinin count()
metoduyla ilgili söylediğimiz her şey listelerin count()
metodu için de geçerlidir.
copy()
Hatırlarsanız, geçen bölümde, listeleri, birbirlerini etkilemeyecek şekilde kopyalamak için şu iki yöntemi kullanmıştık:
>>> liste1 = ["ahmet", "mehmet", "özlem"]
>>> liste2 = liste1[:]
ve:
>>> liste2 = list(liste1)
İşte aynı iş için yukarıdakilere ek olarak copy()
adlı bir metottan da yararlanabiliriz.
>>> liste2 = liste1.copy()
Hangi yöntemi seçeceğiniz size kalmış…
clear()
Listelerle ilgili olarak ele alacağımız son metodun adı clear()
. Bu metodun görevi bir listenin içeriğini silmektir.
Diyelim ki elimizde şöyle bir liste var:
>>> liste = [1, 2, 3, 5, 10, 20, 30, 45]
Bu listenin içini boşaltmak için clear()
metodunu kullanabiliriz:
>>> liste.clear()
>>> liste
[]
Bu metodun del
sözcüğünden farklı olduğunu dikkat edin. clear()
metodu listenin içeriğini boşaltırken, del
sözcüğü listeyi olduğu gibi ortadan kaldırır.
Bu eğitim seti Kaynak tarafından oluşturulmuştur.