Süleyman ÖĞREKÇİ
suleymanogrekci.wordpress.com

List, Tuple ve Dict Veri Tipleri

Programlamada sıklıkla dizisel veriler kullanılır. Bir dizisel veri, daha küçük verilerin belirli bir sırada sıralanmasıyla elde edilen bir veri dizisidir. Daha önceden incelediğimiz string tipi veriler de dizisel verilere bir örnektir.

Şimdi string tipi dışındaki bazı dizisel veri tiplerini ele alacağız.

List Veri Tipi

Bazı verilerin köşeli parantezler içinde virgülle ayrılarak belirli bir sıra dahilinde sıralanmasıyla oluşan veri tipidir. List veri tipinde de aynı string tipi verilerde olduğu gibi indisleme ve dilimleme özellikleri vardır. Hiç veri içermeyen boş list de oluşturulabilir.

In [1]:
veri0 = []
veri1 = [17, "ahmet", veri0, [3, 5, 7, 9]]
In [2]:
print type(veri0)
print type(veri1)
<type 'list'>
<type 'list'>
In [3]:
print veri1[0]
print veri1[-3]
print veri1[1:3]
print veri1[:2]
print veri1[2:]
17
ahmet
['ahmet', []]
[17, 'ahmet']
[[], [3, 5, 7, 9]]

List verilerinin elemanlarını aşağıdaki gibi doğrudan değer atayarak değiştirebiliriz.

In [4]:
veri1[1] = "mehmet"
print veri1
[17, 'mehmet', [], [3, 5, 7, 9]]

List verilerinde aritmetik işlemler elbette tanımlı, aşağıdaki örneği inceleyin.

In [5]:
veri2 = ["x", "y", "z"]
print 3 * veri2
print veri1 + veri2
['x', 'y', 'z', 'x', 'y', 'z', 'x', 'y', 'z']
[17, 'mehmet', [], [3, 5, 7, 9], 'x', 'y', 'z']

List tipi verilerin birçok kullanışlı metodu ve fonksiyonu vardır, bunlardan bazılarını açıklayacağız. Diğer metodları araştırıp öğrenin.

In [6]:
print len(veri2)#dizinin eleman sayısını verir
veri2.append("t")#bir eleman ekler
print veri2
3
['x', 'y', 'z', 't']
In [7]:
veri2.insert(2, "u")#belirtilen indise eleman ekler
print veri2
['x', 'y', 'u', 'z', 't']
In [8]:
del veri2[2]#belirtilen indisteki eleman silinir
print veri2
['x', 'y', 'z', 't']
In [9]:
veri2.reverse()#elemanların sırasını tersine çevirir
print veri2
['t', 'z', 'y', 'x']

Tuple Veri Tipi

List veri tipindeki verileri köşeli parantez yerine normal parantez içine yazarsak oluşan veriye tuple tipi veri denir. Tuple verilerinin tek farkı parantezleri değildir, tuple verileri değiştirilemez (immutable) veri tipleridir. Elemanları daha sonra değiştirilemez.

Bunun dışında list veri tipiyle pek farkı yoktur, indisleme yöntemleri aynıdır. Benzer fonksiyonları ve metodları vardır. Elbette append, del, insert gibi veriyi değiştirmeye yarayan metodlar bu veri tipinde yoktur.

In [10]:
veri3 = ("a", "b", "c")
type(veri3)
Out[10]:
tuple
In [11]:
print veri3[1]
b

Aşağıdaki işlem hata döndürecektir, dönen hata mesajını inceleyin.

In [12]:
veri3[1] = "d"

TypeErrorTraceback (most recent call last)
<ipython-input-12-0b30111a954c> in <module>()
----> 1 veri3[1] = "d"

TypeError: 'tuple' object does not support item assignment

Dict Veri Tip

Birden fazla verinin virgülle ayrılarak oluşturduğu başka bir veri tipi de dict (dictionary) veri tipidir. Bu veri tipinin elemanları küme parantezi içerisinde belirtilir.

Dict veri tipi yapısal olarak list ve tuple tiplerinden çok farklıdır. Bu veri tipinin elemanları iki parçadan oluşur, bu parçalar iki nokta üst üste ile ayrılır. Bunlardan ilkine key (anahtar), ikincisine de value (değer) denir.

Kısaca özetlersek dict tipi bir veri {key1:value1, key2:value2, ...} biçimine sahiptir. Buradaki key değerleri tek türlü olamaldır, yani bir dict içinde bir key iki defa bulunamaz. Fakat value değerleri tek türlü olmak zorunda değildir. Ayrıca value değerleri herhangi bir veri olarak tanımlanırken key değerleri değiştirilemeyen immutable veriler olmalıdır, tuple, string, integer veya float gibi; list olamaz.

In [13]:
veri4 = {}
In [14]:
type(veri4)
Out[14]:
dict

Gördüğünüz gibi boş dict de tanımlanabilir.

In [15]:
veri5 = {'isim':'kyo', 'soyisim':'kusanagi', 'yas':29, 'origin':'honk-kong'}
type(veri5)
Out[15]:
dict

Bir dict verisinin elemanlarına degisken[key] biçiminde ulaşabiliriz. List verilerinde olduğu gibi elemanları güncelleyebilir veya yenilerini ekleyebiliriz.

In [16]:
print veri5
{'origin': 'honk-kong', 'isim': 'kyo', 'soyisim': 'kusanagi', 'yas': 29}
In [17]:
print veri5['isim']
print veri5['origin']
kyo
honk-kong
In [18]:
veri5['yas'] = 35#yas value değiştiriliyor
print veri5
{'origin': 'honk-kong', 'isim': 'kyo', 'soyisim': 'kusanagi', 'yas': 35}
In [19]:
veri5['burc'] = 'ikizler'#yeni bir eleman ekleniyor.
print veri5
{'origin': 'honk-kong', 'isim': 'kyo', 'burc': 'ikizler', 'soyisim': 'kusanagi', 'yas': 35}

Dict tipi için bir çok hazır fonksiyon ve metod vardır, bir kaç tanesini aşağıda örnek olarak kullanalım. Geri kalanlarını araştırıp öğrenin.

In [20]:
print veri5.items()#(key,value) tuple verilierinden oluşan bir list oluşturur
print veri5.keys()#sadece keylerden oluşan bir list oluşturur
print veri5.values()#sadece valuelerden oluşan bir list oluşturur
veri5.clear()#dict içeriğini siler
print veri5
[('origin', 'honk-kong'), ('isim', 'kyo'), ('burc', 'ikizler'), ('soyisim', 'kusanagi'), ('yas', 35)]
['origin', 'isim', 'burc', 'soyisim', 'yas']
['honk-kong', 'kyo', 'ikizler', 'kusanagi', 35]
{}