Python ile 5 Dakikada Veri Yapıları
Tags: python, datastructures, datascience
Published: 2020-10-11 21:43:44

---
series: Python ile 5 Dakikada
---
Bu bölümde orjinal dokümantasyonda [veri yapıları](https://docs.python.org/release/3.9.0/tutorial/datastructures.html#data-structures) olarak geçen;

- Sıra Türleri(Sequence Types): **list, tuple**,
- Eşleme Türü(Mapping Type): **dict**,
- Küme Türü(Set Types): **set**

gibi en çok kullanılan yapıları değineceğiz.

## Liste Yapısı - list

Python ile birden fazla aynı veya farklı tipte veriyi saklamaya ihtiyaç duyabiliriz. Buna `list` nesnesi sayesinde çözüm bulabiliyoruz.

- **Liste oluşturma**

```python
notlarim = [90,80,60,70]
# ikinci yol olarak
benimListem = list()
```

- **Liste elemanlarına erişim**

>Diğer programlama dillerinde olduğu gibi oldukça basit. İndexler `0`'dan başlar. Yani; `notlarim[1]` ile listenin 2. elemanına erişirsiniz.

```python
notlarim[0] # birinci elemana erişim
notlarim[2] # üçüncü elemana erişim
```

- **Liste içinde liste oluşturma**

```python
ilkListem = ["e", 12, 25, 4.2]
buyukListem = [85.5, "Ali uzaya git.", ilkListem]
```

`buyukListem` içerisindeki `ilkListem`'in 12 değerine ulaşmak için:

```python
buyukListem[2][1] # ile ulaşabiliriz.
```

- **Birden fazla liste elemanına erişim**

`ornekListem[1:4]` ile 2. eleman dahil 5. eleman hariç listelenir.
`ornekListem[:2]` ile aslında 0'dan 2. indise sahip elemana kadar listelenir. Aynı mantık ile 2. elemandan itibaren `ornekListem[2:]` kısayol ile geriye kalan tüm elemanları yazdırabiliriz.

>**Not:** Liste eleman manipülasyonları için **`metod()`** kullanımları tavsiye edilmektedir. Yine de bilgi amaçlı diğer kullanımlarda gösterilecektir.

- **Liste elemanlarını değiştirme**

Listedeki elemanları yukarıda gördüğümüz şekilde ve metodlarla değiştirebiliriz.

```python
liste = ["Eydi", "Ali", "Veli", "Ayşe"]
liste[1] = "Ahmet" # 'Ali' ifadesini 'Ahmet' ile değiştirir.
# çoklu değişim
liste[0:3] = "Mert", "Berkay", "Fatih" # ile listenin ilk üç elemanı değişir.
```

- **Listeye yeni eleman ekleme**

```python
liste = liste + "Gökhan" # mutlaka listeye eşitlemeliyiz!
```

- **Listelerde silme işlemi**
```python
del liste # yazarsak tüm liste silinir.
del liste[1] # ile ilgili eleman silinir.
```

- **Liste elemanlarını metodlarla manipüle etme**

Listemizde kullanabileceğimiz metodları görmek için **`dir(liste)`** yazabilir veya ide kullanıyorsak **<kbd>Ctrl</kbd> + <kbd>Space</kbd>** tuşlarıyla erişebiliriz.

```python
liste.append("Ömer") # listeye yeni eleman ekler.
liste.remove("Berkay") # listenin 'Berkay' elemanını kaldırır.
liste.insert(2,"Işıl") # listenin index'ine göre eleman ekler.
liste.pop(4) # liste de indexe göre eleman siler.
# son indexe göre eleman eklemen için.
liste.insert(len(liste),"Esma") # kullanılabilir.
```

- **Diğer liste metodları**

```python
liste.count("Eydi") # listemizde kaç tane 'Eydi' elemanı olduğunu söyler.
yedekListe = liste.copy() # listeyi kopyalar.
liste.extend(["Eydi", "Esma", "Gülhan"]) # ile yeni listeyi ekler ve birleştirir.
liste.reverse() # listeyi tersine çevirir.
liste.sort() # listedeki elemanları küçükten büyüğe doğru sıralar.
liste.clear() # liste içindeki herşeyi siler.
```

## Demet Yapısı - tuple

Listeye bir çok yönüyle benzemektedir. Aralarındaki en büyük fark tuple'ların değiştirilemez olmasıdır. Yani; diğer programlama dillerindeki `const` ifadelerine benzetilebilir.

- **Tuple(Demet) oluşturma**

```python
benimTuple = 1,2,3,"Eydi",[10,20,30] # şeklinde veya
benimTuple2 = (1,2,3,"Eydi",[10,20,30]) # ile oluşturulabilir.

# klasik olarak nesne olduğu için
liste = [10,20,30,40,50]
benimTuple = tuple(liste) # ile de çoklu oluşturulabilir.

# tek olarak oluştururken virgülü unutmamalıyız!
benimDemet = (123,)
benimDemet = "Eydi", # iki ifade de geçerlidir.

empty = () # boş tuple oluşturmaktadır.
```

## Sözlük Yapısı - dict (dictionary)

Sözlüklerin liste ve tuple ile aralarındaki en önemli fark sırasız olmalıdır. İndis yerine anahtar kelime(key value) ile değerleri çağırırlar. **{ }** parantez içerisinde oluştururlar.

- **Sözlük oluşturma**

```python
sozluk = {"dil":"python", "ders":"veri yapıları"}

# nesne oluşturma yöntemiyle
sozluk2 = dict(name="Eydi", age=29, country="Türkiye")
```

- **Sözlük elemanlarına erişim**

```python
sozluk["dil"] # ile ekrana 'python' ifadesi yazdırılır.
sozluk2["name"] # ile ekrana 'Eydi' ifadesi yazdırılır.
```

- **İç içe sözlük yapıları**

Listelerde olduğu gibi iç içe sözlük veya sözlük içinde liste gibi yapılar oluşturulabilir.

```python
ornekSozluk = {"anahtar":{"ikinciAnahtar":"değer", "ders":"sözlükler"},
"kayisiKenti": "Malatya", 44: "plakaKodu", "liste": [10,20,30,40,"kelime"]}
# üstteki örnekteki gibi oluşturulabilir.

# iç içe yapılarda yine dizilerdeki gibi
ornekSozluk["anahtar"]["ders"] # ekrana 'sözlükler' yazdirilabilir.
ornekSozluk["liste"][2] # 30 rakamına ulaşılır.

# anahtar değerler rakamlardan da oluşabilir.
ornekSozluk[44] # ifadesi ile 'plakaKodu' ekrana yazdırılır.
```

- **Sözlük elemanları ekleme veya değiştirme**

```python
sozluk["name"] = "Esma" # ile mevcut eleman değerini değiştirir.
sozluk["ifade"] = "Yeni ekleme" # şeklinde sonuna eleman eklenir.

# çeşitli metodlar kullanılabilir.
sozluk.keys() # anahtar sözcükleri listeler.
sozluk.values() # değerleri listeler.
sozluk.items() # tüm itemleri listeler.
sozluk.pop() # verilen key değerine göre siler.
```

## Küme Yapısı - set

Aslında en temel özelliği her elemandan sadece bir tane bulundurmasıdır.

- **Set oluşturma**

```python
kume = set() # boş set oluşturulur.

# {} ile de tanımlanabilirler.
kume = {1,2,3,4}

#başka bir liste nesnesi aktarılabilir
liste = ["a", 10, 2.4, "Eydi"]
kume = set(liste)
```

>**Not:** Sözlükler ile oluşturulurken aralarındaki fark bir anahtar(key) değere sahip olmamasıdır. Yalnız; **`kume = {}`** şeklinde yazarsak python da ön tanımlı olarak **boş sözlük** oluşturulur.

- **Setlere eleman ekleme ve çıkarma**

```python
kume = set()
kume.add("Eydi") # ile eleman ekleriz.

kume.remove("Eydi") # ile eleman sileriz.

# remove eğer 'Eydi' ifadesini bulamazsa hata verir.
kume.discard("Eydi") # hata vermeden devam eder.
```

- **Setlerde küme işlemleri**

```python
kume1 = set([1,4,7])
kume2 = set([1,3,7])

# ilk kümeden ikincisinin farkını alır
kume1.difference(kume2) # kume1 - kume2 olarak da ifade edilebilir.

# iki kümede de olmayan elemanları gösterir
kume1.symmetric_difference(kume2) # çıktı : {3,4}

# iki kümenin kesişimi
kume1.intersection(kume2) # kume1 & kume2 ilede ifade edilebilir.

# birleşim işlemi
kume1.union(kume2)
```

>**Not:** Set işlemleri arasında **`intersection_update()`** gibi metodlar görmektesiniz. Aslında bu ifade elde edilen değerlerin belirleyeceğiniz kümeye atanmasını sağlar.

```python
#elde edilen değeri atamak için
kume1.intersection_update(kume2) # ile kesişim kümesi kume1 'e aktarılır.
```