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 list
eyi 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)
set
te 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'