Yazan : Şadi Evren ŞEKER

Bu yazının amacı python programlama dilindeki temel veri işlemleri için kullanılan listeler (lists) ve sözlükleri (dictionaries) açıklamaktır.

Python programlama ortamının kurulumu ve bu dilde yapılabilecek temel bazı işlemler için python ile programlama başlıklı yazıya bakabilirsiniz.

Öncelikle listelerden başlayıp ardından sözlüklerden bahasedeceğiz:

Bir liste değişkeni (variable) aşağıdaki şekilde köşeli parantezler ile tanımlanabilir:

l=[1,2,3,4,5]

Buradaki “l” değişkeni içerisine bir liste konulmuştur.

Bu listenin içeriğini basmak için aşağıdakine benzer bir döngü kullanılabilir:

Bir listenin boyutu python dilinde bulunan len() fonksiyonu ile bulunabilir.

Yukarıda tanımlı olan l değişkenindeki listenin boyutu görüldüğü üzere 5 olarak bulunmuştur.

Çok boyutlu listeler kullanılması da mümkündür. Bu kullanım için listeler listesi (list of lists) kullanılması mümkündür.

Örneğin 3×3 boyutunda bir matris tanımlamak için aşağıdaki listeler listesinin kullanılması mümkündür:

Yukarıdaki ll değişkeninin içerisinde tanımlanan 3 elemanın her birisi yine bir listedir.

Bu listedeki elemanları bastırmak için bir önceki tek boyutlu listede kullanılan döngü yapısı iç içe iki döngü kullanılmasıyla mümkün olur.

Aynı yapı bir önceki döngü ile bastırılsaydı:

Yukarıdaki döngüler ile erişilen listelere aynı zamanda rastgele erişim (random Access) yapılması da mümkündür. Bunun için dizilerdeki indeksleme işlemleri (operators) kullanılır.

Yukarıdaki tanımlı olan l ve ll değişkenleri için aşağıdaki erişimler mümkündür:

Listeler 0’dan başlayarak sayılır. Yani bir listenin ilk elemanı 0. elemanıdır. İki boyutlu olan yukarıdaki ll değişkeninin birinci indeksi kullanılarak erişildiğinde bir liste, ikinci indeksi kullanılarak erişildiğinde ise bir listenin bir elemanına erişilebilir.

Bir liste başka bir listenin tanımı sırasında da kullanılabilir:

Yukarıda görüldüğü üzere ll listesinin ilk ve son elemanı l listesinden oluşmaktadır.

Bir listeye bir eleman eklemek (append) için + (artı) işlemi (operator) kullanılabilir.

Örneğin yukarıda içeriği verilen ll listesi için l listesinin elemanlarının eklenmiş hali gösterilmiştir.

Yukarıda dikkat edilirse listenin elemanları açılarak eklenmiştir. Listenin elemanlarının yine bir liste olarak eklenmesi için aşağıdaki kullanım mümkündür:

Görüldüğü üzere yukarıdaki bu kullanımda eklenen l listesi köşeli parantezler arasında eklenmiştir. Bu sayede [l] ibaresi bir listeler listesi olmuş ve ll listesi ile uç uca eklenince yeni bir liste halinde tutulmuştur.

Bir listeden bir elemanın silinmesi için remove() fonksiyonu kullanılabilir.

Yukarıdaki örnekte görüldüğü üzere önce ll listesinden 3 sayısı silinmiş. Ardından [1,2,3] alt listesi, ll listesinden silinmiştir. Bu alt listeden 3 tane olmasına rağmen her silinmesinde bir eleman silinmiş ve diğerleri bırakılmıştır.

Bir listedeki elemanları tersine çevirmek için reverse() fonksiyonu kullanılabilir:

Yukarıda, içeriği verilen l listesinin tersi alınmıştır. Listenin tersi yine aynı değişken içerisinde tutulur.

Bir listenin içeriğini sıralamak için sort() fonksiyonu kullanılabilir:

Yukarıda, içeriği verilen liste sıralanmış ve ekrana bastırılmıştır.

Listelerin, yığın (stack) ve sıra (queue) olarak kullanılmaları da mümkündür. Bu kullanım için listelerin başına ve sonuna ekleme ve çıkarma işlemi yapan özel fonksiyonların kullanılması yeterlidir.

Yukarıda temsili bir listeye ekleme ve çıkarma işlemleri gösterilmiştir. Buna göre append() fonksiyonu ile eklenmesi ve pop() fonksiyonu ile alınması durumunda yığın (stack) kodlanabilir. Benzer şekilde append() fonksiyonu ile eklenip popleft() fonksiyonu ile alınması durumunda ise sıra (queue) kodlanabilir.

Aşağıda önce yığın sonra da sıra kodlamasına örnek görelim:

Yukarıdaki kodda önce l değişkeni boş bir liste olarak tanımlanmış ardından append () fonksiyonu ile listenin sonuna kelimeler eklenmiştir. Son eklenen ‘com’ dizgisi (string) ilk pop() fonksiyonu ile dönen dizgidir. Bu anlamda bir yığının taşıdığı özellik olan son eklenen ilk çıkar (LIFO , last in first out) prensibi uygulanmış olur.

Benzer şekilde bir listenin sıra olarak kullanılması da mümkündür:

Yukarıdaki örneğin çalışması için collections grubundan dequeu eklenmesi gerekir bunun için:

from collections import deque

yazmak yeterlidir. Ardından yukarıdaki şekilde çalıştırılan kodda, append fonksiyonu ile listenin sonuna ekleme yapılırken popleft() fonksiyonu ile listenin başından çıkarma işlemi yapılmaktadır.

Listeler üzerinde yapılan bir işlem de, listelerin formül ve fonksiyonlar üzerinden üretilebilmesidir.

Örneğin aşağıdaki kod parçasını ele alalım:

Yukarıdaki örnekte, bir l listesinin içerisine 1’den 3’e kadar sayılar konulmuş, ardından l2 listesine bu sayıların 2 misli ve l3 listesine bu sayıların kareleri konulmuştur.

Benzer şekilde listeler üzerinde belirli şartların tanımlanması da mümkündür.

Yukarıdaki ilk kullanımda l4 listesi, daha önceden tanımlanan l listesindeki [1,2,3] elemanlarının yarısını içermektedir. Ancak bu ikiye bölme işlemi sırasında bir koşul belirtilmiş ve x%2==0 şartını sağlayan elemanlar filitrelenmiştir. Bunun anlamı l listesindeki çift sayılar alınarak 2’ye bölünecek ve l4 listesine atılacak demektir.

L5 listesinin oluşumunda ise iki farklı listenin elemanlarından faydalanılmıştır. Burada iç içe iki döngü kullanılarak l listesinin elemanları x ve l2 listesinin elemanları y olarak gösterilmiştir.

Döngüleri aşağıdaki şekilde iç içe düşünmek doğru olur:

for x in l

for y in l2

x-y

Yukarıdaki bu yazım mucibince x’in her elamanı için y’nin her elemanı bir kere çıkarılacaktır.

Bu durumda [1,2,3] elemanlarından mürekkep l listesi için x sırasıyla 1,2 ve 3 değerlerini alacak, y ise [2,4,6] listesinden sırasıyla 2,4,6 değerlerini alacaktır. O halde yeni oluşan l5 listesinin elemanları aşağıdaki şekilde hesaplanmıştır:

1-2,1-4,1-6

2-2,2-4,2-6

3-2,3-4,3-6

Yukarıda 3 satırda yazılmasının sebebi okuyucuya her satırdaki x değerinin değiştiğini gösterebilmektir, yoksa bu liste tek seviyelidir.

Sözlükler (Lugatlar, Dictionaries)

Sözlüklerin python dilinde, listelerden en belirgin farkı köşeli parantezler [] yerine küme parantezleri {} kullanılmasıdır.

Sözlükler, günlük hayattaki sözlük kelimesinin anlamı itibariyle bir kelimenin anlamını içeren yapılardır.

Python dilinde kullanımı da aynen bu şekildedir. Bir kelimenin (ya da buna anahtar da denilebilir) bir değer ile karşılandığı listelere sözlük (lugat) ismi verilebilir.

Örneğin öğrenci numarası ve isim arasında bir sözlük oluşturmak isteyelim.

Yukarıdaki kodda, l isimli sözlükte öğrenci no -> isim şeklinde bir sözlük oluşturulmuş ve verilen telefon numarasından bir kişinin ismine erişilmesine imkan sağlanmıştır.

Yukarıdaki örnekte görüldüğü üzere bu sözlükten bir anahtar verilerek köşeli parantez işlemi (operator) ile erişilebilir.

Aynı zamanda bu sözlükte bulunan anahtarlara (sözlük kelimelerine) de keys() fonksiyonu ile erişilebilir.

Sözlüklerde kullanılan bir anahtar şekli de dizgilerdir (Strings) Örneğin yukarıdaki kodda, anahtar olarak bir dizgi (string) kullanılmıştır.

Yorumlar

Bir cevap yazın

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