# # Python Listeler

Python koleksiyonlar (diziler) altında yer alan **liste (list)** veri tipimiz *sıralanabilen* , *değiştirilebilen* , *indekslenebilen* ve *çoğul elemana izin veren* bir veri tipidir. Köşeli parantezlerle `[ ]` oluşturulur.

```python
liste = []
```

Köşeli parantezlere oluşturulan listeler, en başta elemanlarla birlikte de oluşturulabilirler.

```python
liste = ["Ankara","İstanbul","Kayseri"]
```

Aynı zamanda bir liste **list()** fonksiyonu ile de oluşturulabilir ve constructor yöntemiyle başlangıçta elemanları ayarlanabilir.

```python
liste = list()

liste = list(("Ankara","İstanbul","Kayseri"))
```

Oluşturduğumuz `liste` değişkenlerinin tipini kontrol edelim.

```python
print(type(liste)) # <class 'list'>
```

## 1. Liste Elemanlarına Erişim

Python programlama dilinde elinizdeki bir listenin elemanlarına ulaşabilmek için indeksleri kullanmalısınız. Aşağıdaki örnekle indeksleri nasıl kullanacağınızı gösterelim.

```python
liste = ["Sal","Vapur","Feribot","Korvet","Fırkateyn"]

print(liste[0])    # Sal
print(liste[1])    # Vapur
print(liste[2])    # Feribot
print(liste[3])    # Korvet
print(liste[4])    # Fırkateyn
```

{% hint style="warning" %}
İndeks her zaman **0** dan başlar. Yani bir listede ilk elemanın indeksi 0 dır.
{% endhint %}

## 2. Negatif İndeksleme

Negatif indeks kullanarak bir listeyi tersten başlayarak ele alabilirsiniz. Örnek üzerinde görelim hemen.

```python
liste = ["Sal","Vapur","Feribot","Korvet","Fırkateyn"]

print(liste[-1])    # Fırkateyn
print(liste[-2])    # Korvet
print(liste[-3])    # Feribot
print(liste[-4])    # Vapur
print(liste[-5])    # Sal
```

{% hint style="warning" %}
Negatif indeks normal indeksin aksine **-1** den başlar. Yani bir listede son elemanın indeksi -1 dir.
{% endhint %}

## 3. Bir Listeden Yeni Liste Oluşturma (İndeks)

Elimizde mevcut olan bir listeden indeks belirterek yeni bir liste oluşturabiliriz. Örneğin mevcut listenin 2.indeksinden 5.indeksine kadar ( *5 dahil değil* ) olan elemanlarla yeni bir liste oluşturalım.

```python
liste = ["a","b","c","d","e","f","g"]

yeniliste = liste[2:5]

print(yeniliste)    #["c","d","e"]
```

{% hint style="info" %}
Bu şekilde yeni liste oluştururken `[x:y]` ifadesinde x dahil, y dahil değildir. Ayrıca indeksin **0** dan başladığını unutmayınız!
{% endhint %}

## 4. Bir Listeden Yeni Liste Oluşturma (Negatif İndeks)

Elimizdeki listeden yeni bir liste oluştururken negatif indeksleri de kullanabiliriz.

```python
liste = ["a","b","c","d","e","f","g"]

yeniliste = liste[-3:-1]

print(yeniliste)    #["e","f"]
```

{% hint style="info" %}
Bu şekilde yeni liste oluştururken `[-x:-y]` ifadesinde -x dahil, -y dahil değildir. Ayrıca negatif indeksin **-1** den başladığını unutmayınız!
{% endhint %}

## 5. Liste Elemanlarını Sıralayarak Ekrana Yazdırma

Yeri geldiğinde liste elemanlarınızı ekrana sırasıyla yazdırmak, elemanlar üzerinde sırasıyla işlem yapmak isteyebilirsiniz. Bunun için **for** döngümüzü kullanacağız.

```python
liste = ["a","b","c","d"]

for x in liste:
    print(x)
```

Bu şekilde listenin tüm elemanları x değeri üzerinden otomatik olarak listelenecek ve dizi elemanı bittiğinde döngü duracaktır.

## 6. Liste Eleman Sayısını Öğrenme

Elinizde olan bir listenin eleman sayısını öğrenmek için **len()** fonksiyonunu kullanacağız.

```python
liste = ["a","b","c","d"]

print(len(liste))    #4
```

Eğer özellikle bir elemanın listede kaç adet bulunduğunu öğrenmek isterseniz de **count()** fonksiyonunu kullanmanız gerekiyor.

```python
liste = ["a","b","c","c","d","c"]

sayac = liste.count("c")

print(sayac)    #3
```

## 7. Liste Elemanının Değerini Değiştirme

Listeler ile çalışırken listede mevcut olan bir elemanın değerini rahatlıkla değiştirebilirsiniz. Bunun için elemanın indeks değerini bilmeniz yeterlidir.

```python
meyveler = ["kivi","çilek","muz","pırasa"]

meyveler[3] = "armut"

print(meyveler)    # ["kivi","çilek","muz","armut"]
```

## 8. Listeye Yeni Eleman Ekleme

Listeler ile çalışırken listenin sonuna rahatlıkla yeni bir eleman ekleyebilirsiniz. Bunun için **append()** fonksiyonunu kullanacağız.

```python
meyveler = ["kivi","çilek"]

meyveler.append("muz")

print(meyveler)    # ["kivi","çilek","muz"]
```

Eğer listenin sonuna değilde belirlediğiniz indeks numarasına eleman eklemek istiyorsanız **insert()** fonksiyonunu kullanmalısınız.

```python
meyveler = ["kivi","çilek"]

meyveler.insert(1,"muz")

print(meyveler)    # ["kivi","muz","çilek"]
```

## 9. Listeden Bir Eleman Çıkarma

Listenizden bir eleman çıkarmak istiyorsanız bunun dört yöntemi vardır. İlki listenin en sonundaki elemanı listeden atmaktır ve bunun için **pop()** fonksiyonunu kullanmalısınız.

```python
meyveler = ["kivi","çilek","muz","armut"]

meyveler.pop()

print(meyveler)    # ["kivi","çilek","muz"]
```

İkinci yöntem çıkarmak istediğiniz elemanı belirterek **remove()** fonksiyonunu kullanmaktır.

```python
meyveler = ["kivi","çilek","muz","armut"]

meyveler.remove("çilek")

print(meyveler) # ["kivi","muz","armut"]
```

Üçüncü yöntem çıkarmak istediğiniz elemanın indeksini belirterek **del** terimini kullanmaktır.

```python
meyveler = ["kivi","çilek","muz","armut"]

del meyveler[0]

print(meyveler) # ["çilek","muz","armut"]
```

Son ve en sert yöntemde tüm listeyi temizlemektir. Listedeki tüm elemanları çıkarıp boş bir liste elde etmek için **clear()** fonksiyonunu kullanabilirsiniz.

```python
meyveler = ["kivi","çilek","muz","armut"]

meyveler.clear()

print(meyveler) # []
```

## 10. Liste Kopyalamak ve Çoğaltmak

Elimizde olan bir listeyi kopyalayarak çoğaltmak istiyorsak **copy()** fonksiyonunu kullanabiliriz.

```python
liste = ["a","b","c","d"]

yeniliste = liste.copy()

print(yeniliste) # ["a","b","c","d"]
```

Liste kopyalama için kullanılan diğer bir yöntem de yeni bir liste oluşturulurken kopyalanacak listeyi belirtmektir.

```python
liste = ["a","b","c","d"]

yeniliste = list(liste)

print(yeniliste) # ["a","b","c","d"]
```

## 11. İki Farklı Listeyi Birleştirmek

Birbirinden farklı veya aynı iki listeyi birleştirmek için **+** operatörünü kullanabiliriz.

```python
liste1 = ["A","B","C"] liste2 = ["D","E"]

liste3 = liste1 + liste2

print(liste3) # ["A","B","C","D","E"]
```

Şimdi ise sırf bu liste birleştirme işlemi için oluşturulmuş **extend()** fonksiyonunu kullanalım.

```python
liste1 = ["A","B","C"] liste2 = ["D","E"]

liste1.extend(liste2)

print(liste1) # ["A","B","C","D","E"]
```

Kolay yöntemleri öğrendikten sonra şimdi de biraz daha uzun yöntemini görelim.

```python
liste1 = ["A","B","C"] liste2 = ["D","E"]

for x in liste2: liste1.append(x)

print(liste1) # ["A","B","C","D","E"]
```

## 12. Liste Elemanlarını Sıralamak

Liste elemanlarınızı küçükten büyüğe veya büyükten küçüğe sıralamak istediğiniz zaman **sort()** fonksiyonunu kullanabilirsiniz.

```python
liste = [14,36,2,95,43,0,66]

liste.sort()

print(liste) # [0, 2, 14, 36, 43, 66, 95]
```

Tam tersi yani büyükten küçüğe sıralamak için **reverse=True** terimini kullanmalısınız.

```python
liste = [14,36,2,95,43,0,66]

liste.sort(reverse=True)

print(liste) # [95, 66, 43, 36, 14, 2, 0]
```

## 13. Bir Elemanın İndeksini Bulmak

Elimizdeki listeden bir elemanının listedeki indeksini bulmak için **index()** fonksiyonunu kullanabilirsiniz.

```python
liste = [14,36,2,95,43,0,66]

print(liste.index(95)) # 3
```

## 14. Bir Elemanın Varlığını Kontrol Etme

Listede bir elemanın var olup olmadığını kontrol etmek için **in** terimini kullanabiliriz.

```python
liste = ["A","B","C","D","E"]

if "C" in liste: 
    print("Evet var!") 
else: 
    print("Hayır yok!")
    
# Evet var!
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://derslik.kerteriz.net/python-dersleri/temel-dersler/python-diziler/python-listeler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
