Press "Enter" to skip to content

Listeler

Yaşar SAFALI 0

Python Listeler

Python’da listeler list veri tipinde yer alırlar. Listeler eleman olarak bütün veri tiplerini kullanabilirler.Şimdi ilk olarak listelerin genel tanımlanma kurallarına bakalım.Python Listeler

liste=[]
type(liste)

şeklinde tanımlanırlar.Bu boş bir listenin tanımlanma şeklidir.Şimdi de listemize elemanlar atayalım.

liste=["yazılım","hanem",23,True]
type(liste)

Gördüğünüz gibi Python Listeler her veri tipinden elemanı kullanabilir. type() fonksiyonu ile liste adlı değişkenin list veri tipinde olduğunu görebiliriz.

Listelerin Gösterimi

Listeleri ekrana yazdırmak için çeşitli yollar mevcuttur.

İlk olarak listenin bütün elemanlarını ekrana yazdırmak istersek print() fonksiyonunu kullanmamız yeterlidir.

liste=["yazılım","hanem",23,True]
print(liste)

Listenin elemanlarına tek tek erişmek için de döngü kullanmamız gerekmektedir.

liste=["yazılım","hanem",23,True]
for i in liste:
  print(i)

len() fonksiyonu bize bir nesnenin boyutunu vermektedir.Gömülü Fonksiyonlar yazımızda değinmiştik.Bu fonksiyon ile listemizde kaç adet eleman yer aldığını öğrenebiliriz.Python Listeler

liste=["yazılım","hanem",23,True]
len(liste)

Listelerde yer alan elemanlara indislerini kullanarak erişmek mümkündür.Burda dikkat edilmesi gereken nokta listelerin indisleri 0 dan başlamaktadır.Şimdi listenin elemanlarına indisler ile erişmeye bakalım.Python Listeler

liste=["yazılım","hanem",23,True]
>>> for i in range(0,len(liste)):
  print(liste[i])

Listelerde indisler 0 dan başladığı için başlangıç değerimiz 0 bitiş değerimiz ise uzunluğa kadardır.(uzunluk dahil değil)

Listelerin bir diğer gösterim yolu ise karakter dizileri ile aynıdır.Başlangıç, ve bitiş indisleri ile birlikte indis artım miktarını belirterek listelerin elemanlarına erişilebilir.

liste=["yazılım","hanem",23,True]
liste[0:len(liste):1]# veya [::1]

İndis değerleri karakter dizilerinde olduğu gibi – ile başlayabilir.Yani listenin elemanlarına sondan başlayarak erişilir.

liste=["yazılım","hanem",23,True]
liste[-1:-5:-1] #veya [::-1]

 

 

Listeler bütün veri tiplerinde eleman kullanabilir demiştik.Şimdi bir listenin içine başka bir listeyi eleman olarak ekleyelim.

liste=[1,2,3,["yazılım","hanem"]]
len(liste)
for i in liste:
   print(i)

Output:

4

1
2
3
[‘yazılım’, ‘hanem’]

Listenin uzunluğu 4 olarak bize dönmektedir.Çünkü listenin içinde yer alan diğer liste bir eleman olarak kabul edilir.

Şimdi listenin içerisinde yer alan diğer listenin elemanlarına erişelim.

liste=[1,2,3,["yazılım","hanem"]]
print(liste[3][0])
print(liste[3][1])

Output:

yazılım

hanem

Listelerin Elemanlarını Değiştirmek

Listeler mutable(değiştirilebilir) veri tipleridir.Karakter dizilerini anlatırken inmutable olduklarını(değiştirilemez) söylemiştik.Bir karakter dizisini değiştirmek istediğimizde baştan tanımlamamız gerekmekteydi.Listeler ise baştan tanımlanmadan değiştirilebilirler.

liste=[1,2,3,["yazılım","hanem"]]
print(liste)
liste[0]=0
print(liste)
liste[2]=5
print(liste)

Kodu incelediğimiz zaman indisini belirttiğimiz elemanların artık atadığımız yeni değerler olduğunu görmekteyiz.

Eğer mevcut olmayan bir indisteki elemanı değiştirmek isterseniz Python size hata mesajı verecektir.

 

Listeleri Birleştirme 

İki listeyi tek bir liste olarak birleştirmek mümkündür.

liste1=["Python","Programlama",1]
liste2=["Yazılım","Hanem"]
liste3=liste1+liste2 #yeni bir listeye atamadan da var olan bir listeye sonucu atayabiliriz. liste1+=liste2
print(liste3)


Output:

[‘Python’, ‘Programlama’, 1, ‘Yazılım’, ‘Hanem’]

Python’da listeler karakter dizileri veya sayılarla birleştirilemezler.Birleştirme işlemi için veri  tiplerinin liste olması gerekir.

Listeden Eleman Çıkarmak

Listeden eleman çıkarmak için del() fonksiyonundan yararlanılabilir.Parametre olarak verilen elemanı silecektir.

liste=["yazılım","hanem","python"]
del(liste[2])

Listeyi Silmek

Listeleri silmek için del() fonksiyonu kullanılır.Parametre olarak silinecek liste verilir.

liste=["yazılım","hanem","python"]
del(liste)

Listeleri Kopyalamak

Mevcut bir listenin kopyasını almak mümkündür.Programcılar çoğu zaman buna ihtiyaç duymaktadırlar.Şimdi Python’da bunun nasıl yapıldığını inceleyelim.

liste1=["yazılımhanem","python dersleri",23,1]
liste2=liste1

Görüldüğü gibi liste2 adlı listeye liste1 listesini atadık.Şimdi elemanlarını ekrana yazdıralım.

print(liste1)
print(liste2)

Output:

[‘yazılımhanem’, ‘python dersleri’, 23, 1]

[‘yazılımhanem’, ‘python dersleri’, 23, 1]

Görüldüğü gibi kopyalama işlemi gerçekleşti.Şimdide liste1 adlı listenin elemanlarını değiştirelim ve listeleri ekrana yazdıralım.

liste1[0]=5
liste1[2]=4
print(liste1)

Output:

[5, ‘python dersleri’, 4, 1]

Görüldüğü gibi elemanlar değişmiş.Şimdi bir de liste2 adlı listeyi ekrana yazdıralım

print(liste2)

Output:

[5, ‘python dersleri’, 4, 1]

Biz liste2 adlı listede hiç bir değişiklik yapmadık oysa liste2nin de elemanları değişmiş.Listeler mutable yapılardır.elemanları değiştirilebilir.Peki üzerinde işlem yapmadığımız listenin elemanı niye değişti?

Bu sorunun cevabını vermeden önce bizlere nesnelerin kimlik numarasını veren id() fonksiyonunu çalıştıralım.

id(liste1)
id(liste2)

Output:

2818231540488

2818231540488

Görüldüğü gibi tanımlanmış bu iki liste bir biri üzerinden kopyalandığı için aynı kimlik numarasına sahiptir.Yani birinde yapılacak değişiklik hafızada diğerini de etkileyecektir.O yüzden listeleri kopyalarken bu kurala dikkat edilmelidir.Peki bunun çaresi nedir?

liste2=list(liste1)
id(liste1)
id(liste2)

Output:

2818231540488

2818235277256

Görüldüğü gibi artık farklı kimliklere sahiptirler.Çünkü yeniden liste tipinde bir değişken olarak tanımlanmıştır.

 

Liste Üreteçleri(List Comprehensions)

Liste üreteçleri Python’da programcılara büyük avantaj sağlamaktadır.Tek satırda liste oluşturmaya olanak sağlamaktadırlar.

Şimdi 0 dan 10 a kadar olan sayıları bir listeye atayalım.

liste=[]
for i in range(0,10):
    liste+=[i]
print(liste)

Output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Atama işlemini gerçekleştirdik.

Şimdi aynı atamayı liste üreteçleri ile yapalım.

liste=[i for i in range(0,10)]
print(liste)

Output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Bir önceki adımda 3 satırda yaptığımız işlemi şimdi tek bir satırda yaptık.Liste üreteçleri burada bizlere avantaj sağlamaktadır.Genel kullanımı bu şekildedir. liste tanımlanır ve içerisine ilk olarak atanacak değer daha sonra elemanların değer aralığı yazılır.

Liste Üreteçleri ile ilgili bir örnek daha yapalım.

liste=[i for i in range(0,10) if i %2==0]
print(liste)

Output:

[0, 2, 4, 6, 8]

Kod dikkatli incelenirse atayacağımız değere bu seferde şart yazdık.Sayı 2 ye bölünebiliyorsa eklemesini istedik.

Liste üreteçlerinin  yararlarını anlatan bir örnek daha yapalım.Elimizde bir liste olsun ve bu listenin elemanları da listeler olsun.Biz bu elemanların hepsine tek tek erişmek isteyelim.Eriştiğimiz elemanları yeni bir listeye atayalım.

liste=[[1,2,3],[4,5,6],[7,8,9]]
liste2=[]
for i in liste:
  for j in i:
    liste2+=[j]
print(liste2)

Output:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Şimdi aynı işlemi liste üreteçleri ile yapalım.

liste=[[1,2,3],[4,5,6],[7,8,9]]
liste2=[z for i in liste for z in i]
print(liste2)

Output:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Görüldüğü gibi liste üreteçleri bizlere büyük kolaylık sağlamaktadır.Ama bu kolaylığın bazen dezavantajı olabilir.Özellikle iç içe döngü kullanımı çok olacaksa kodun okunabilirliği düşebilir.

Listeler ile ilgili anlatacaklarımız şimdilik bu kadardır.Bir sonraki yazımızda listelere ait metotlara değineceğiz.Bir sonraki yazımızda görüşmek dileğiyle.

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir