Python Öğreniyorum 7 – Listeler (Soru çözümlü)

16.10.2020 0 Yazar: Yönetici

Python Öğreniyorum 7 – Listeler (Soru çözümlü). Bu videomuzda listeleri nasıl kullanılabileceğini öğreneceğiz ve örnek soru çözümleri yapacağız.

Merhabalar. Python öğreniyorum serimizin 7.videosuna hoş geldiniz. 6.videomuzda karakter dizilerini – Stringleri nasıl kullanılabileceğini öğrenerek örnek soru çözümleri yaptık. Bu videomuzda listeleri nasıl kullanılabileceğini öğreneceğiz ve örnek soru çözümleri yapacağız. Haydi başlayalım.

Bir değişkende bir değer tutulabilir. Eğer birçok değeri tutmak istiyorsanız ki bu durum birçok programlarda gerekebilir, liste yapısını kullanabilirsiniz. Liste köşeli parantezlerle ifade edilir ve içindeki değerler virgülle ayrılır. Örneğin a = 5, a değişkeni sadece bir değer tutar. Ama b = [1, 3, 5, 7, 9] şeklindeki ifade de b bir listedir ve birçok değer tutmaktadır. Değerlere ulaşmak için bir önceki karakter dizileri dersinde öğrendiğimiz indeksler kullanılır. Soldan sağa doğru 0’dan başlar ve 1, 2, 3 şeklinde devam eder. Sağdan sola doğru ise -1’den başlar ve -2, -3 şeklinde devam eder. Örneğin b dizisi için b[2] 5 değerini, b[-2] ise 7 değerini verir. Bir liste fraklı tiplerde değerler içerebilir.

len fonksiyonu ile listedeki eleman sayısı öğrenilebilir. Mesela renkler listesi gökkuşağı renklerini içersin. Bizim programımız renkler listesindeki renkleri tek tek alıp alt alta yazsın.

Boş bir liste oluşturup, program içerisinde liste doldurulabilir. Listeye eleman eklemek için append metodu kullanılır. Bir program yazalım. Bu programda önce bir sayı girilsin ve daha sonra bu sayı adedince daha sayı girilsin. Girilen bu sayıları listeye ekleyelim ve sonunda listeyi yazdıralım.

İki liste + işareti ile birleştirilebilir. Bir liste bir sayı ile çarpıldığında ise sayı adedince çoğaltılır. Örneğin:

Split ve join metotları

Split bir önceki derste de öğrendiğimiz gibi string i bölmek için kullanılır. Örneğin bir satırda girilen bir yazıyı kelimelerine ayırıp, bir diziye yerleştirelim.

Bir satırda girilen am sayıları diziye sayı olarak yerleştirmek gerekirse:

Bu kodu Python da daha kısa bir şeklide yazabiliriz.

Split ile bölünme sembolü belirtilmezse, otomatik olarak boşluk alınır. Şu örneğimizde ise bölünme sembolünü belirtelim. Örneğin verilen IP adresinin sayılarını bir diziye yerleştirelim.

join ise dizinin elemanlarını istenilen sembol ile birleştirmek için kullanılır. Örneğin bir önceki programda ki IP sayıları aralarında boşluk olacak şekilde ve parantezler olmadan yazdıralım.

Dilimleme

String lerde olduğu gibi listelerde de dilimleme kullanılabilir. Örneğin

renkler = [‘kırmızı’, ‘turuncu’, ‘sarı’, ‘yeşil’, ‘mavi’, ‘lacivert’, ‘mor’]

listesinde şu dilimlemeleri inceleyelim.

renkler[1:4] – [‘turuncu’, ‘sarı’, ‘yeşil’]

renkler[1:5:2] – [‘turuncu’, ‘yeşil’]

renkler[5:1:-1] – [‘lacivert’, ‘mavi’, ‘yeşil’, ‘sarı’]

Listelerin karakter dizilerinden farkı ise elemanların değiştirilebilmesidir. Yani stringlerde değiştirme yapılamaz idi, listelerde ise değiştirme yapılabilir.

Örneğin renkler = [‘kırmızı’, ‘turuncu’, ‘sarı’, ‘yeşil’, ‘mavi’, ‘lacivert’, ‘mor’]

Listesinde renkler[0] = ‘red’ yazarsak yeni liste şu şekilde olacaktır.

renkler = [‘red’, ‘turuncu’, ‘sarı’, ‘yeşil’, ‘mavi’, ‘lacivert’, ‘mor’]

Dilimleme şeklinde de değişiklik yapılabilir. Örneğin renkler = [‘kırmızı’, ‘turuncu’, ‘sarı’, ‘yeşil’, ‘mavi’, ‘lacivert’, ‘mor’] Listesinde

renkler[1:3] = [‘orange’, ‘yellow’, ‘green’]

yazarsak yeni liste şu şekilde olacaktır.

[‘kırmızı’, ‘orange’, ‘yellow’, ‘green’, ‘yeşil’, ‘mavi’, ‘lacivert’, ‘mor’]

Liste Metotları

5 in [1, 3, 5] True 5 [1, 3, 5] de var mı? Varsa True, yoksa False
5 not in [1, 3, 5] False 5 [1, 3, 5] de yok mu? Yoksa True, varsa False
[1, 2] + [3, 4, 5] [1, 2, 3, 4, 5] + birleştirmek için kullanılır.
[1, 2] * 3 [1, 2, 1, 2, 1, 2] * liste sayı adedince kopyalanılır
[1, 3, 5][1] 3 1.ci indeksli karakteri verir
[1, 3, 5, 7, 9][:3:2] [1, 5] Baştan 3.cü indekse kadar 1 atlayarak alır
len([1, 3, 5, 7, 9]) 5 Listedeki eleman sayısını verir
max([1, 3, 5, 7, 9]) 9 En büyük elemanı verir
min([1, 3, 5, 7, 9]) 1 En küçük elemanı verir
sum([1, 3, 5, 7, 9]) 25 Bütün elemanların toplamını verir
[1, 3, 5, 7, 9].index(5) 2 Bulunan ilk 5 sayısının indeksinin verir
[1, 3, 5, 7, 9].count(5) 2 5 listede kaç defa tekrar ediyor
a = [1, 3, 5, 7, 9]

a.append(5)

[1, 3, 5, 7, 9, 5] 5 a listesine sondan eklenir
a = [1, 3, 5]

del a[1]

a = [1, 5]

 

1. indeksli elemanı siler
a = [1, 3, 5]

a.clear()

[] Bütün elemanlar silinir
a = [1, 3, 5]

b = a.copy()

[1, 3, 5] a b’ye kopyalanır
a = [1, 3, 5]

a.insert(1, 7)

[1, 7, 3, 5] 7 sayısı 1.indeksli konuma yerleştirilir ve diğerleri kaydırılır.
a = [1, 3, 5]

b = a.pop(1)

[1, 5] Pop verilen indeksli elemanı alır ve aynı zamanda listeden siler
a = [1, 3, 5]

a.remove(3)

[1, 5] Bulunan ilk 3 sayısını siler
a = [1, 3, 5]

a.reverse()

[5, 3, 1] Listeyi ters çevirir
a = [1, 5, 3]

a.sort()

[1, 3, 5] Listeyi artan şekilde sıralar
a = [1, 5, 3]

a.sort(reverse=True)

[5, 3, 1] Listeyi azalan şekilde sıralar
a = [1, 5, 3]

bool(a)

True Liste boş değilse True, Boşsa False değerini verir

Ayrıca belirli bir eleman sayısına sahip bir liste oluşturabiliriz. Örneğin 5 elemandan oluşan ve 0 değerlerini içeren bir liste oluşturmak için a = [0] * 5 yapısı kullanılabilir.

Rastgele beş sayıdan (sayılar 1 ile 10 arasında) oluşan bir liste oluşturmak için şu kod kullanılabilir.

Her çalıştırma da sayılar değişecektir.

Soru Çözümleri

  1. Bir öncekinden büyük olanlar

Verilen listedeki sayılardan, bir öncekinden büyük olanları veren programı yazınız.

Giriş:
1 8 2 6 3
Çıkış:
8 6

  1. En büyük sayı ve indeksi

Verilen listedeki en büyük sayıyı ve bu sayının indeksini bulan programı yazınız. Eğer en büyük sayıdan birden çok varsa, ilk sayıyı verecek.

Giriş:
1 2 5 3 1
Çıkış:
5 2

Python da kısa bir şekilde şöyle yazılabilir.

  1. Farklı elemanların sayısı

Artan şekilde sıralanan bir listede, kaç farklı sayı bulunduğunu bulan programı yazınız.

Giriş:
1 2 2 2 3 3 3
Çıkış:
3

  1. Maksimum ve minimum sayıların yer değiştirilmesi

Bütün elemanları farklı olan listede, maksimum ve minimum sayıların yerlerini değiştiren programı yazınız.

Giriş:
3 4 8 2 1
Çıkış:
3 4 1 2 8

  1. Eleman silme

Verilen listeden k indeksli elamanı silen programı yazınız. Silinen elemanın sağındaki sayılar sola birer kaydırılacaklar.

Giriş:
7 6 5 4 3 2 1
3
Çıkış:
7 6 5 3 2 1

  1. Eleman ekleme

Verilen listeye k indeksli yere a sayısını ekleyen programı yazınız. Eklenen eleman ve sağındaki tüm elemanlar sağa birer kaydırılacaklar.

Giriş:
7 6 5 4 3 2 1
2 9
Çıkış:
7 6 9 5 4 3 2 1