Python ile Liste (List) Kullanımı
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, Python’daki listelerin ne olduğunu, nasıl oluşturulup kullanıldığını adım adım inceleyeceğiz.
Python’da Listeler
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.
Listelerin tanımlanmasında köşeli parantezler []
kullanılır ve içindeki elemanlar 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:
1 |
meyveler = ["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. Bakınız: [“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 bir arada tutabilirsiniz. Örneğin, bir öğrencinin adı, yaşını ve not ortalamasını aşağıdaki gibi tek bir listede tutabilirsiniz:
1 |
ogrenci = ["Ahmet", 20, 85.6] |
Listeler, değiştirilebilir (mutable) bir yapıya sahip oldukları için, indeks numaralarını kullanarak sahip oldukları elemanları değiştirebiliriz. Aşağıdaki örneği inceleyiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Başlangıçta bir renk listesi oluşturalım renkler = ["kırmızı", "mavi", "turuncu"] # 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ı', 'turuncu'] """ |
Yukarıdaki örnek, listelerin içerisindeki elemanların indeks numarasını kullanarak nasıl değiştirilebileceğini göstermektedir.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
birinci_liste = ["elma", "armut", "muz"] print(birinci_liste) ikinci_liste = [123, 456, 789] print(ikinci_liste) ücüncü_liste = ["elma", "armut", "muz", 123, 456] print(ücüncü_liste) dördüncü_liste = ["elma", "armut", "muz", 123, 456, 123, 123, "elma"] print(dördüncü_liste) besinci_liste = [True, False, False] print(besinci_liste) |
Bu esnek yapı, listeleri veri saklama ve manipülasyonunda oldukça kullanışlı kılar. Özellikle birçok benzer veriyle çalışırken, bu verileri bir arada tutmak ve üzerlerinde işlem yapmak için listeleri kullanmak son derece verimlidir.
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 -1 ile başlarız. Özetle:
- Listedeki ilk elemanının indeksi ➡️ 0
- Listedeki son elamanın indeksi ➡️ -1
1 2 3 4 5 6 7 |
birinci_liste = ["elma", "armut", "muz"] print(birinci_liste[-1]) """ çıktı: muz """ |
Yani bu demektir ki, tersten bir sıralama yaparken “-1, -2, -3 vb.” negatif sayıları kullanabiliriz. Bir başka örnek:
1 2 3 4 |
hayvanlar = ["kedi", "köpek", "kuş", "balık"] print(hayvanlar[-1]) # çıktı: balık print(hayvanlar[-3]) # çıktı: köpek |
Eğer bir liste içerisinden belirli bir aralıktaki elemanları seçmek isterseniz dilimleme (slicing) yöntemini kullanabilirsiniz. Bunun için şöyle bir syntax (söz dizimi) kullanırız: liste[başlangıç_indeksi:bitiş_indeksi]
Bu dilimleme yöntemi ile başlangıç indeksinden, bitiş indeksine kadar olan (bitiş indeksi dahil olmamak üzere) elemanları alabiliriz. Örneğin:
1 2 3 4 |
sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(sayilar[2:7]) # çıktı: [2, 3, 4, 5, 6] #indeks 2 dahil, indeks 7 dahil değil |
Ayrıca dilimlemenin daha geniş bir formunu kullanarak adım sayısı (step) da belirleyebiliriz. Bu durumda syntax şu şekilde olacaktır: liste[başlangıç_indeksi:bitiş_indeksi:adım]
1 2 3 4 |
sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(sayilar[1:9:2]) # çıktı: [1, 3, 5, 7] #indeks 1 dahil, indeks 9 dahil değil, adım sayısı 2 |
Dilimleme işlemi, başlangıç ve bitiş indekslerinin belirtilmediği durumlar için de çalışır. Özellikle, listenin başından ya da sonundan itibaren dilim almak istediğinizde kullanışlı olmaktadır:
1 2 3 4 5 |
sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(sayilar[:5]) # çıktı: [0, 1, 2, 3, 4] indeks 5'e kadar print(sayilar[5:]) # çıktı: [5, 6, 7, 8, 9] indeks 5'ten başla print(sayilar[::2]) # çıktı: [0, 2, 4, 6, 8] ikişer adımla dilimle |
Pekala negatif sayılar da dilimlemede kullanılabilir. Negatif indeksler, listenin sonundan başlayarak geriye doğru elemanlarına erişmek için kullanılır. Örneğin:
[-1]
listenin ya da listenin son elemanını alır.[::-1]
listenin ya da listenin tüm elemanlarını ters sırayla alır.[::-2]
listenin ya da listenin tüm elemanlarını ters sırayla ikişer adımla alır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
liste = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Listeyi sondan başlayarak dilimlemek: dilimlenmis_liste = liste[-6:-2] print(dilimlenmis_liste) # Çıktı: [50, 60, 70, 80] liste_bir = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Listenin sonundan başlayarak 2'şer geriye doğru giden bir dilimleme: dilimlenmis_liste = liste_bir[-1:-11:-2] print(dilimlenmis_liste) # Çıktı: [10, 8, 6, 4, 2] liste_iki = [1, 2, 3, 4, 5] ters_liste = liste_iki[::-1] print(ters_liste) # Çıktı: [5, 4, 3, 2, 1] liste_uc = [1, 2, 3, 4, 5, 6] ters_ikişer_adim = liste_uc[::-2] print(ters_ikişer_adim) # Çıktı: [6, 4, 2] |
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 ve listede kaç eleman varsa, for döngüsü o kadar tur yapacaktır. Bunu yapabilmek için kullanılan syntax ise şu şekildedir:
1 2 |
for eleman in liste: # Yapılacak işlemler |
Örneği meyvelerin eklendiği listeler üzerinde gezinip, her bir meyveyi aşağıdaki gibi yazdıralım:
1 2 3 4 5 6 7 8 9 10 11 12 |
meyveler = ["elma", "muz", "kiraz", "üzüm"] for meyve in meyveler: print(meyve) """ Çıktı: elma muz kiraz üzüm """ |
Bazen elemanlara erişirken indeks numaralarını da kullanmak isteyebiliriz. Bu durumda enumerate
fonksiyonunu kullanabiliriz. Bakınız:
1 2 3 4 5 6 7 8 9 10 11 12 |
meyveler = ["elma", "muz", "kiraz", "üzüm"] for indeks, meyve in enumerate(meyveler): print(f"Indeks: {indeks}, Meyve: {meyve}") """ Çıktı: Indeks: 0, Meyve: elma Indeks: 1, Meyve: muz Indeks: 2, Meyve: kiraz Indeks: 3, Meyve: üzüm """ |
rnek bir senaryoda nasıl kullanılabileceğini 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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. Aşağıdaki senaryoyu kodlayalım:
“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 yapabiliriz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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}") """ Çıktı: 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. Sırageldi Python’da listeler için kullanılan liste metotlarını incelemeye.
Python 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 |
clear() | Listedeki tüm elemanları siler |
copy() | Listenin bir kopyasını döndürür |
count() | Belirtilen değere sahip öğelerin sayısını döndürür |
extend() | Bir listeye bir başka listenin elemanlarıbnı ekler |
index() | Belirtilen elemanın ilk bulunduğu indeksini (sıra sayısını) döndürür |
insert() | Belirtilen elemanı belirtilen konuma ekler |
pop() | Belirtilen konumdaki elemanı kaldırır |
remove() | Belirtilen değere sahip elemanın ilk olanını kaldırır |
reverse() | Listenin sırasını tersine çevirir |
sort() | Listeyi (alfabetik ya da sayısal) sıralar |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
print("----------append----------") meyve = ['çilek', 'vişne', 'ahududu'] meyve.append("böğürtlen") print (meyve) #liste içine elaman ekledi a = ["elma", "armut", "ayva"] b = ["Ford", "BMW", "Volvo"] a.append(b) print(a) #liste içine bir başka liste ekledi print("----------clear----------") yeni_meyve = ['çilek', 'vişne', 'ahududu'] yeni_meyve.clear() #liste elemanlarını komple sildi print (yeni_meyve) print("----------copy----------") ikinci_meyve = ['çilek', 'vişne', 'ahududu'] x= ikinci_meyve.copy() #liste elemanlarını kopyaladı print (x) print("----------count----------") ucuncu_meyve = ['çilek', 'vişne', 'ahududu'] y= ucuncu_meyve.count("vişne") #listedeki belirtilen elemanın indeks sayısını buldu print (y) print("----------extend----------") dorduncu_meyve = ['elma', 'armut', 'ayva'] arabalar = ['Ford', 'BMW', 'Volvo'] dorduncu_meyve.extend(arabalar) print(dorduncu_meyve) print("----------index----------") besinci_meyve = ['elma', 'armut', 'ayva', "armut"] k= besinci_meyve.index("ayva") print(k) print("----------insert----------") altinci_meyve = ['elma', 'armut', 'ayva', "armut"] altinci_meyve.insert(1, "kayısı") print(altinci_meyve) print("----------pop----------") yedinci_meyve = ['elma', 'armut', 'ayva', "armut"] yedinci_meyve.pop(1) print(yedinci_meyve) print("----------remove---------") sekizinci_meyve = ['elma', 'armut', 'ayva', "armut"] sekizinci_meyve.remove("armut") print(sekizinci_meyve) print("----------sort---------") sayilar = [0, 5, 3,2, 4, 3, 35] sayilar.sort() print(sayilar) kelimeler = ["a", "araba", "anı", "burs", "ülke", "ücra"] kelimeler.sort() print(kelimeler) |
Python’da Listeler Nasıl Birleştirilir?
Python’da listeleri birleştirmek için çeşitli yöntemler bulunmaktadır. Aşağıda bu yöntemleri ve kullanımlarını bulabilirsiniz:
- artı (+) operatörü ile listeleri birleştirmek.
1 2 3 4 |
liste1 = [1, 2, 3] liste2 = [4, 5, 6] birlesik_liste = liste1 + liste2 print(birlesik_liste) # Çıktı: [1, 2, 3, 4, 5, 6] |
- extend() metodunu kullanarak
1 2 3 4 |
liste1 = [1, 2, 3] liste2 = [4, 5, 6] liste1.extend(liste2) print(liste1) # Çıktı: [1, 2, 3, 4, 5, 6] |
- İki listeyi birleştirmek için for döngüsü ile bir listeyi sıralayıp diğerine append() metodu ile değer eklemek mümkündür. 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.
1 2 3 4 5 6 7 |
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:
- Liste Elemanlarının Ortalaması
1 2 3 4 5 6 7 8 9 |
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 |
- Listede En Büyük ve En Küçük Eleman
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
- Listeyi Ters Çevirme
1 2 3 4 5 6 7 8 9 |
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] |
- Listedeki Tek Sayılar
1 2 3 4 5 6 7 8 9 10 |
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] |
- Listede Tekrar Eden Elemanın Tekrar Etme Sayısı
1 2 3 4 5 6 7 8 9 10 11 |
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 |
- Listedeki Toplam Eleman Sayısı
1 2 3 4 5 6 7 8 9 10 |
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 |
Kodu çalıştırmak için: Trinket