koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da Koleksiyon Türleri

Python’da bir dizi koleksiyon türüne sahibiz. int ve str gibi veri türleri ile tek bir değer tutarken, koleksiyon türleri ile birden çok değeri tutabiliriz.

Python’da Liste

list türü muhtemelen Python’da en sık kullandığımız koleksiyon türüdür. Adına rağmen, liste, daha çok diğer dillerdeki array gibidir – örneğin JavaScript’te. Python’da bir liste, yalnızca geçerli Python değerlerinin sıralı bir koleksiyonudur. Köşeli parantez içine virgülle ayrılmış değerler ekleyerek bir liste oluştururuz.

int_list  =  [ 1 ,  2 ,  3 ] 
string_list  =  [ 'abc' ,  'defghi' ]

Boş bir liste de oluşturabiliriz:

empty_list  =  []

Liste öğeleri tek bir veri türüyle sınırlı değildir. Bu da Python’un dinamik bir dil olduğunu düşündüğümüzde mantıklıdır:

mixed_list  =  [ 1 ,  'abc' ,  True ,  2.34 ,  None ]

Bir liste içinde öğe olarak başka bir listeyi tutabiliriz:

ic_ice_list  =  [[ 'a' ,  'b' ,  'c' ],  [ 1 ,  2 ,  3 ]]

Bir listenin elemanlarına bir dizin (index) veya konumlarının sayısal gösterimi yoluyla erişebiliriz. Python’daki listeler sıfır dizinlidir, yani listedeki ilk öğeye 0. indexten, ikinci öğeye 1. indexten ulaşırız vb.

isimler  =  [ 'Alice' ,  'Bob' ,  'Craig' ,  'Diana' ,  'Eric' ] 
print(isimler[0])  # Alice
print(isimler[2])  # Craig

Dizinler ayrıca negatif de olabilir, bu da listenin sonundan saymak anlamına gelir ( -1 son elemanın indeksi). Öyleyse, yukarıdaki örnekteki listeyi kullanırsak:

print(isimler[-1])  # Eric 
print(isimler[-4])  # Bob

Listeler değiştirilebilir (mutable), böylece bir listedeki değerleri değiştirebiliriz:

isimler[0]  =  'Ann' 
print(isimler) 
# Çıktı: ['Ann', 'Bob', 'Craig', 'Diana', 'Eric']

Bir listeye öğe ekleyebilir ve/veya kaldırabiliriz.

L.append(object) komutu ile listenin sonuna nesne ekleriz. Bu komut None döndürür.

isimler  =  [ 'Alice' ,  'Bob' ,  'Craig' ,  'Diana' ,  'Eric' ] 
isimler.append("Sia") 
print(isimler)  
Çıktı: ['Alice', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']

Belirli bir dizinde yeni bir öğeyi L.insert(index, object) ile ekleriz.

isimler.insert(1,"Nikki") 
print(isimler) 
Çıktı: ['Alice', 'Nikki', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']

L.remove(value) ile bir değerin ilk kopyasını kaldırırız, None döner.

isimler.remove("Bob") 
print(isimler)  
# Çıktı: ['Alice', 'Nikki', 'Craig', 'Diana', 'Eric', 'Sia']

Değeri x olan ilk öğenin listedeki dizinini L.index(value) ile alabiliriz. Böyle bir öğe yoksa hata alırız.

isim.index("Alice") 
0

Listenin uzunluğunu len komutu ile öğreniriz:

len(isimler) 
6

listedeki herhangi bir öğenin kopya sayısını sayabiliriz;

a  =  [ 1 ,  1 ,  1 ,  2 ,  3 ,  4 ] 
a.count(1) 
3

Listeyi ters çevirebiliriz

a.reverse() 
[ 4 ,  3 ,  2 ,  1 ,  1 ,  1 ] 
# veya
a[::-1] 
[ 4 ,  3 ,  2 ,  1 ,  1 ,  1 ]

L.pop() ile dizindeki öğeyi kaldırır ve bu öğeyi döndürürüz. Bu durumda varsayılan olarak son öğeyi çıkartmış oluruz.

isimler.pop()  # 'Sia' döndürülür

Aşağıdaki gibi liste öğelerini yineleyebiliriz:

for element in my_list:     
    print(element)

Python’da Tuple – Demet Koleksiyonu

tuple türü sabit uzunluklu olması ve değişmez olması dışında bir listeye benzer. Bu nedenle, değerlerini değiştiremeyiz. Veya yeni değerler ekleyip veya çıkartamayız. Tuple’ları genellikle IP adresi ve bağlantı noktası gibi değiştirilmesi gerekmeyen küçük değer koleksiyonları için kullanırız. Tuple köşeli parantezler yerine parantezlerle temsil edilir:

ip_address = ('10.20.30.40', 8080)

Listeler için geçerli olan indeksleme kurallarını tuple için de kullanırız. Tuple, ayrıca, iç içe oluşturulabilir ve öğeleri geçerli herhangi bir Python öğesi olabilir.

Yalnızca bir üyesi olan bir tuple aşağıdaki gibi tanımlanmalıdır (virgüle dikkat edin):

one_member_tuple = ('Sadece bir üye',)

veya

one_member_tuple  = 'Sadece bir üye' ,    # Parantez yok

yada sadece tuple sözdizimi kullanılarak

one_member_tuple  =  tuple(['Sadece bir üye'])

Python’da Sözlük (dictionary)

dictionary Python’da anahtar-değer çiftlerinden oluşan bir koleksiyondur. dictionary türünü küme parentezi ile oluştururuz. Her çifti virgülle ayırırız ve anahtar-değer çiftini iki nokta üst üste ile gösteririz. Örneğin:

state_capitals  =  { 
    'Arkansas' :  'Little Rock' , 
    'Colorado' :  'Denver' , 
    'California' :  'Sacramento' ,  
    'Georgia' :  'Atlanta' 
}

Bir değere ulaşmak için o değeri anahtarı ile çağırırız:

ca_capital  =  state_capitals['California']

Ayrıca bir sözlükteki tüm anahtarları döngü içerisinde alabilir ve ardından bunları yineleyebiliriz:

for k in state_capitals.keys():
    print('{} is the capital of {}'.format(state_capitals[k], k))

dictionary JSON sözdizimine büyük ölçüde benzer. Python standart kitaplığındaki yerel json modülünü, JSON ve dictionary arasında dönüştürme yapmak için kullanabiliriz.

Python’da Set Koleksiyonu

set, tekrarlı öğesi olmayan ve ekleme sırası olmayan bir sıralı öğeler koleksiyonudur. Hangi sırayla dahil edildiklerinin değil, yalnızca bazı şeylerin bir arada gruplandırılmasının önemli olduğu durumlarda kullanırız. Büyük veri grupları için bir elemanın koleksiyonda olup olmadığını kontrol etmek list‘e göre set ile çok daha hızlıdır.

set tanımlamak, dictionary tanımlamaya çok benzer :

first_names  =  { 'Adam' ,  'Bey' ,  'Charlie' }

Veya mevcut olan bir listeyi kullanarak bir set oluşturabiliriz :

my_list  =  [1, 2, 3] 
my_set  =  set(my_list)

in kullanarak set üyeliğini kontrol edebiliriz:

if name in first_names:     
   print(name)

sette de listte olduğu gibi yineleme yapabiliriz. Ancak, setteki değerleri uygulama tanımlı bir sırada alırız.

Python’da defaultdict

defaultdict, anahtarlar için varsayılan bir değere sahip bir sözlüktür. Böylece değerleri açıkça tanımlanmamış anahtarlara hatasız bir şekilde erişilebiliriz. defaultdict değerleri koleksiyonlar (list, dict, vb.) olduğunda özellikle kullanışlıdır. Bu durumda her anahtar tanımlamamız gerekmez.

defaultdict bir KeyError hatası oluşturmaz. Var olmayan herhangi bir anahtar döndürülen varsayılan değeri alır.

defaultdict kullanımını anlamak için aşağıdaki örneğe bakalım:

state_capitals  =  { 
    'Arkansas' :  'Little Rock' , 
    'Colorado' :  'Denver' , 
    'California' :  'Sacramento' ,  
    'Georgia' :  'Atlanta' 
}

Varolmayan bir anahtara erişmeye çalışırsak aşağıdaki gibi bir hata alırız:

state_capitals['Alabama'] 
Traceback (most recent call last):

  File "<ipython-input-61-236329695e6f>", line 1, in <module>
    state_capitals['Alabama']

KeyError: 'Alabama'

Bunu defaultdict ile deneyelim. Öncelikle Collections modülünden defaultdict‘i çağırmamız gerekecek. Bunun ne olduğunu bilmiyorsanız şimdilik önemli değil, ilk satırı görmezden gelebilirsiniz:

>>> from collections import defaultdict 
>>> state_capitals = defaultdict(lambda: 'Boston')

Burada yaptığımız şey, anahtarın olmadığı durumlarda kullanılmak üzere bir varsayılan değer atamak (Boston). Şimdi dictionary’yi eskisi gibi dolduralım:

>>> state_capitals['Arkansas'] = 'Little Rock' 
>>> state_capitals['California'] = 'Sacramento' 
>>> state_capitals['Colorado'] = 'Denver' 
>>> state_capitals['Georgia'] = 'Atlanta'

Şimdi, mevcut olmayan bir anahtarla dict’e erişmeye çalışırsak python bize varsayılan değeri, yani Boston’u döndürür.

>>>  state_capitals['Alabama'] 
'Boston'

ve mevcut anahtar için oluşturulan değerleri çağırırsak normal bir dictionary gibi davranır;

>>>  state_capitals['Arkansas'] 
'Little Rock'

Bir cevap yazın

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

Back to top