Python 3'te Liste Yöntemleri Nasıl Kullanılır
Giriş
Python 3, listeler gibi birçok yerleşik veri yapısına sahiptir. Veri yapıları, verileri organize etmemize ve saklamamıza olanak sağlar ve yerleşik yöntemler ile bu verileri çağırabilir veya işleyebiliriz. Bu eğitici makaleden en iyi şekilde yararlanmak için liste veri türüne, söz dizimine ve nasıl indekslendiğine dair temel bilgilere sahip olmanız gerekir. Listeleri gözden geçirmek isterseniz, "Python 3'te Listeleri Anlamak" başlıklı eğitici makaleyi okuyabilirsiniz. Bu makalede, listeler ile çalışmak için kullanabileceğiniz yerleşik yöntemleri ele alacağız. Listelere öğeler ekleyecek, öğeleri kaldıracak, listeleri genişletecek, ters çevirecek ve sıralayacağız. Listelerin değiştirilebilir (mutable) veri türleri olduğunu unutmamak önemlidir. Değiştirilemez (immutable) veri türü olan string'lerin aksine, bir yöntemi liste üzerinde kullandığınızda, o yöntemin etkisi doğrudan liste üzerinde olacak, bir kopyası üzerinde değil. Bu eğitici makalede, çoğunlukla bir belediye akvaryumunda bulunan çeşitli balıkların envanterini içeren bir liste üzerinde çalışacağız.
list.append()
list.append(x)
yöntemi bir listenin sonuna bir öğe (x
) ekleyecektir. Akvaryumda dağılmış balıklarımızın bir listesiyle başlayacağız. <$>[info] Bilgi: Bu eğitimdeki örnek kodu takip etmek için, python3
komutunu çalıştırarak yerel sisteminizde bir Python etkileşimli kabuğu açın. Daha sonra örnekleri>>>
isteminden sonra ekleyerek kopyalayabilir, yapıştırabilir veya düzenleyebilirsiniz. <$>
baliklar = ['barakuda', 'morina', 'şeytan vatozu', 'yılan balığı']
Bu liste, 4 string öğeden oluşmaktadır ve bunların indeks numaraları 'barakuda'
için 0'dan başlayarak 'yılan balığı'
için 3'e kadar uzanmaktadır.
Bugün akvaryuma yeni bir balık geldi ve bu balığı listemize eklemek istiyoruz. Yeni balık türümüz olan 'pisi balığı'
string'ini list.append()
metoduna ileteceğiz ve öğenin eklendiğini doğrulamak için değiştirilen listemizi yazdıracağız.
baliklar.append('pisi balığı')
print(baliklar)
**Çıktı:**
['barakuda', 'morina', 'şeytan vatozu', 'yılan balığı', 'pisi balığı']
Şimdi, append()
fonksiyonuna ilettiğimiz öğe ile sonlanan 5 string öğeden oluşan bir listemiz var.
list.insert()
list.insert(i, x)
yöntemi iki argüman alır:i
, öğeyi eklemek istediğiniz indeks pozisyonudur ve x
, öğenin kendisidir.
Akvaryumumuza başka bir yeni balık
, bir hamsi geldi. Bu listeyi alfabetik sırada tutmak istiyoruz. Bu yüzden, 'hamsi'
string'ini listenin sonuna eklemek yerine, 'hamsi
'yi listenin başına eklemek için list.insert()
fonksiyonunu kullanacağız:
baliklar.insert(0, 'hamsi')
print(baliklar)
Çıktı
['hamsi', 'barakuda', 'morina', 'şeytan vatozu', 'yılan balığı', 'pisi balığı']
Bu durumda, string öğesini listenin önüne ekledik. Sonuç olarak, diğer tüm öğeler yeni indeks numaralarına taşındı. 'barakuda'
şimdi indeks 1'de, 'morina'
indeks 2'de ve son öğe olan 'pisi balığı'
ise indeks 5'te yer alıyor.
Akvaryuma bir "damselfish" getirdiğimizde, alfabetik sıralamayı korumak için öğeyi 3
indekse ekleriz: baliklar.insert(3, 'damselfish')
.
liste.uzunlaştır()
Birden fazla listeyi birleştirmek istediğimizde, list.extend(L)
yöntemini kullanabiliriz. Bu yöntem, ikinci bir listeyi argüman olarak alır.
Akvaryumumuza kapanan başka bir akvaryumdan dört yeni balık geliyor. Bu balıkları bir liste içinde topladık:
daha_fazla_balik = ['kaya balığı', 'ringa balığı', 'sazan', 'öpüşen gurami']
Şimdi, daha_fazla_balik
listesindeki öğeleri baliklar
listesine ekleyeceğiz ve ikinci listenin dahil edildiğini doğrulamak için listeyi yazdıracağız:
baliklar.extend(daha_fazla_balik)
print(baliklar)
**Çıktı:**
['hamsi', 'barakuda', 'morina', 'şeytan vatozu', 'yılan balığı', 'pisi balığı', 'kaya balığı', 'ringa balığı', 'sazan', 'öpüşen gurami']
Bu noktada, baliklar
listesi 10 öğeden oluşmaktadır.
liste.kaldır()
Bir listeden öğe çıkarmamız gerektiğinde, list.remove(x)
yöntemini kullanırız. Bu yöntem, değeri x
'e eşit olan listedeki ilk öğeyi kaldırır.
Yerel bir araştırma ekibi, akvaryumumuza gelip, öpüşen gurami balıkları üzerinde araştırma yapmak istediklerini belirtiyorlar. Onlara ödünç vermek için listemizden 'öpüşen gurami'
öğesini kaldıracağız:
baliklar.remove('öpüşen gurami')
print(baliklar)
Çıktı
['hamsi', 'barakuda', 'morina', 'şeytan vatozu', 'yılan balığı', 'pisi balığı', 'kaya balığı', 'ringa balığı', 'sazan']
list.remove()
metodunu kullandıktan sonra, listemizde artık 'öpüşen gurami'
öğesi bulunmamaktadır.
list.remove()
'da x
için listede bulunmayan bir öğe geçirirseniz, aşağıdaki hatayı alırsınız:
Çıktı
ValueError: list.remove(x): x not in list
Unutmayın, list.remove()
yalnızca verdiğiniz öğenin ilk örneğini kaldırır. Eğer akvaryumumuzda iki tane öpüşen gurami olsaydı ve
yalnızca birini ödünç verseydik, baliklar.remove('öpüşen gurami')
ile hala bir tane daha listede kalırdı.
liste.pop()
list.pop([i])
yöntemi, verilen indeks konumundaki öğeyi listeden döndürür ve ardından o öğeyi kaldırır. Kare parantezler içindeki i
indeksin isteğe bağlı olduğunu gösterir, bu yüzden eğer bir indeks belirtmezseniz (örneğin, baliklar.pop()
), listenin son öğesi döndürülür ve kaldırılır.
Akvaryumumuzdaki şeytan vatozu çok büyüdü ve başka bir akvaryum onu kabul edebilecek. .pop()
yöntemini kullanarak, 'şeytan vatozu'
öğesinin indeks numarası olan 3
'ü belirteceğiz ve öğeyi listeden çıkararak doğru öğeyi kaldırdığımızı doğrulayacağız:
print(baliklar.pop(3))
print(baliklar)
Çıktı
şeytan vatozu
['hamsi', 'barakuda', 'morina', 'yılan balığı', 'pisi balığı', 'kaya balığı', 'ringa balığı', 'sazan']
.pop()
yöntemini kullanarak baliklar
listesinden 'şeytan vatozu'
öğesini döndürüp kaldırmış olduk.
Bu yönteme herhangi bir parametre geçirmezsek ve baliklar.pop()
çalıştırırsak, son öğe olan 'sazan'
döndürülür ve listeden kaldırılır.
list.index()
Listeler uzamaya başladığında, belirli bir değerin hangi indeks pozisyonunda olduğunu saymak zorlaşabilir. list.index(x)
yöntemini kullanarak, x
ile eşit olan bir öğenin listedeki indeksini alabiliriz. Eğer birden fazla öğe x
değeriyle eşleşiyorsa, bu yöntem ilk öğenin indeksini döndürür.
print(baliklar)
print(baliklar.index('ringa balığı'))
Çıktı
['hamsi', 'barakuda', 'morina', 'yılan balığı', 'pisi balığı', 'kaya balığı', 'ringa balığı', 'sazan']
6
Her ne kadar baliklar
listesi çok uzun olmasa da, 'ringa balığı'
öğesinin indeks pozisyonunu saymadan öğrenebildik. Listenin indekslerini bilmek, listeleri etkili bir şekilde manipüle etmemiz için çok önemlidir.
Eğer .index()
ile bir değer belirtirsek ve o değer listede bulunmazsa şu hatayı alırız: ValueError: 'x' is not in list
.
liste.kopyala()
Bir listeyle çalışırken, onu çeşitli şekillerde manipüle etmek isteyebiliriz, ancak orijinal listeyi değiştirmeden tutmak isteriz. Bu durumda list.copy()
yöntemini kullanarak listenin bir kopyasını alabiliriz.
fish.copy()
ile dönen değeri baliklar_2
değişkenine atayıp, iki listenin aynı olduğunu doğrulamak için yazdıralım:
baliklar_2 = baliklar.copy()
print(baliklar_2)
Çıktı
['hamsi', 'barakuda', 'morina', 'yılan balığı', 'pisi balığı', 'kaya balığı', 'ringa balığı', 'sazan']
Bu noktada, hem baliklar
hem de baliklar_2
aynı öğeleri içeren eşdeğer listelerdir.
liste.ters()
Bir listedeki öğeleri ters çevirmek için list.reverse()
yöntemini kullanabiliriz. Belki de alfabetik sıralama yerine ters sıralamayı kullanmak bizim için daha uygun olabilir. Bu durumda, baliklar
listesini tersine çevirmek için .reverse()
yöntemini kullanmamız gerekir.
baliklar.reverse()
print(baliklar)
Çıktı
['sazan', 'ringa balığı', 'kaya balığı', 'pisi balığı', 'yılan balığı', 'morina', 'barakuda', 'hamsi']
.reverse()
yöntemini kullandıktan sonra, listemiz artık sondaki öğe olan 'sazan'
ile başlar ve baştaki öğe olan 'hamsi'
ile biter.
liste.sayısı()
list.count(x)
yöntemi, bir listede x
değerinin kaç kez geçtiğini döndürür. Uzun bir listeye sahip olduğumuzda ve birçok eşleşen değer olduğunda bu yöntemi kullanmak isteyebiliriz. Örneğin, daha büyük bir akvaryumumuz olduğunu ve her bir neon tetraları listelediğimizi düşünelim. Bu durumda, .count()
yöntemini kullanarak kaç tane neon tetra olduğunu öğrenebiliriz.
Mevcut listemizi kullanarak 'kaya balığı'
öğesinin kaç kez geçtiğini sayalım:
print(baliklar.count('kaya balığı'))
Çıktı
1
'Kaya balığı'
öğesi yalnızca bir kez geçtiği için, .count()
yöntemini kullandığımızda 1 döndürülür.
Şimdi bu yöntemi bir tamsayı listesi ile de kullanalım. Akvaryumumuz her balığa mükemmel bakım sağlamaya kararlıdır, bu yüzden her bir balığın yaşını takip ediyoruz. Bu ikinci liste, baliklar_yaşları
, diğer listemizdeki balık
türlerine karşılık gelir.
1 yaşındaki balıkların özel diyet gereksinimleri olduğundan, kaç tane 1 yaşında balığımız olduğunu sayacağız:
baliklar_yaşları = [1,2,4,3,2,1,1,2]
print(baliklar_yaşları.count(1))
Çıktı
3
1
sayısı, baliklar_yaşları
listesinde 3 kez geçmektedir. Bu yüzden .count()
yöntemi kullanıldığında 3 döndürülür.
İşte başlıklarla birlikte tam çeviri.
liste.sıralama()
list.sort()
yöntemini kullanarak bir listedeki öğeleri sıralayabiliriz.
list.count()
yöntemi gibi, list.sort()
da belirli bir tamsayı değerinden kaç tane olduğunu daha net görebilmemizi sağlar ve sıralanmamış bir sayı listesini sayısal sıraya koyabilir.
baliklar_yaşları
tamsayı listesine bakalım ve .sort()
yöntemini çalıştıralım:
baliklar_yaşları.sort()
print(baliklar_yaşları)
Çıktı:
[1, 1, 1, 2, 2, 2, 3, 4]
.sort()
yöntemini kullanarak baliklar_yaşları
listesinde tamsayılar sıralı bir şekilde döndürüldü. Pratikte, bu yaşlar belirli balıklara karşılık geldiği için, orijinal listeyi sıralamadan önce bir kopyasını almak isteyebilirsiniz.
liste.temizle()
Bir listeyle işimiz bittiğinde, list.clear()
yöntemini kullanarak listede bulunan tüm değerleri kaldırabiliriz.
Yerel hükümet, akvaryumumuzu halka açık bir alan haline getirmeye karar verdi. Artık akvaryumu kendimiz yönetmediğimiz için balıkların envanterini tutmamıza gerek yok. Bu yüzden baliklar
listesini temizleyelim:
baliklar.clear()
print(baliklar)
Çıktı:
[]
baliklar
listesine .clear()
işlevini uyguladıktan sonra, çıktıda boş köşeli parantezler alıyoruz. Bu, listenin artık tüm öğelerden temizlendiğini gösteriyor.
Sonuç
Değiştirilebilir (mutable) ve sıralı bir elemanlar dizisi olarak listeler, Python'da oldukça esnek veri yapılarıdır. Liste yöntemleri, listelerle karmaşık bir şekilde çalışmamıza olanak tanır. Yöntemleri, listeleri değiştirmek için başka yollarla birleştirerek, programlarımızda listeleri etkili bir şekilde kullanmak için geniş bir araç yelpazesine sahip olabiliriz. Buradan, mevcut listelere dayalı listeler oluşturmak için liste kavrayışlarını (list comprehensions) öğrenebilirsiniz.
Lisa Tagliaferri tarafından yazılan How To Use List Methods in Python 3 a Programming makalesinin düzenlenmiş çevirisi
Daha Fazla Oku:
- Sonraki Makale: Python 3'te Liste Kavramlarını Anlamak
- Önceki Makale: Python 3'te Listeleri Anlamak