set
(küme) veri tipinde sıralamanın bir önemi yokken aynı elemanları list
olarak tanımlarsak artık konum bilgisi önem kazanacaktır. Bugün bir listedeki elemanlar içinden istediğimiz yeni bir sıralı listeyi seçmeyi öğreneceğiz. Buna slicing (slaysing okunabilir) yani dilimleme de deniyor.
Şöyle bir renk listesi oluşturalım:
renkler = ['kırmızı', 'siyah', 'beyaz']
Hatırlarsanız liste elemanlarına köşeli parantezle ulaşıyorduk. En baştaki kırmızı
ve siyah
a şöyle ulaşabiliriz:
print(renkler[0]) # 'kırmızı'
print(renkler[1]) # 'siyah'
Peki en sondaki elemana nasıl ulaşırız? En baştan sıfırdan itibaren sayalım: sıfır - kırmızı, bir - siyah, iki - beyaz. Yani renkler[2]
bize beyazı verir. Soldan tek tek saymak yerine en sağdan negatif sayılarla da bunu yapabiliyoruz. Yani bir listenin son elemanına [-1]
sıra numarasıyla da ulaşabiliriz:
print(renkler[2]) # 'beyaz'
print(renkler[-1]) # 'beyaz'
Şimdi asıl konumuza gelelim. Peşpeşe birden fazla elemanı nasıl ifade edeceğiz? Mesela bu listenin son 2 elemanını nasıl alabiliriz? Bunu elemanların konum bilgisiyle yapıyoruz. İlk alacağımız elemanın konumu, arada iki nokta üstüste :
, son alacağımız elemanın (malesef) bir fazlası. Burada Pythoncular ne düşündü bilemiyorum ama son elemanın konumunun kendisinin değil de bir fazlasının yazılması isteniyor.
Bunu bir örnekle yöntem haline getirelim :
renkler = ['kırmızı', 'siyah', 'beyaz', 'gri']
Bu listeden siyah
, beyaz
ve gri
yi almak istiyorsak şöyle bir yöntem izleyebiliriz:
-
liste adı, köşeli parantez,
renkler[
- soldan itibaren elemanlara bakarak sıfırdan itibaren sayıyoruz
-
gözümüz kırmızıda numarası
sıfır
, geçtik (almıyoruz) -
gözümüz siyahta numarası
bir
, alacağız,renkler[1:
-
gözümüz beyazda numarası
iki
, saymaya devam -
gözümüz gride numarası
üç
, alacağız, bitti -
son elemanı gördükten sonra 1 ekliyoruz
3 + 1 = 4
-
renkler[1:4]
Çıktıyı alalım:
print(renkler[1:4]) # ['siyah', 'beyaz', 'gri']
Burada 1 ve 4 sınırları ifade ederken iki nokta üstüste aradaki herşey anlamına geliyor. Şimdi noktalarla biraz dans edelim.
- Bitiş sayısını yazmazsak Python en sona kadar gider:
print(renkler[2:]) # ['beyaz', 'gri']
- Başlangıç sayısını yazmazsak Python en baştan saymaya başlar:
print(renkler[:3]) # ['kırmızı', 'siyah', 'beyaz']
- Sayıların hiçbirini yazmazsak tam liste gelir:
print(renkler[:]) # ['kırmızı', 'siyah', 'beyaz', 'gri']
- Maksimum sınırları yazınca da tabi ki tam liste gelir:
print(renkler[0:4]) # ['kırmızı', 'siyah', 'beyaz', 'gri']
- Buraya dikkat, Slice 'ımıza bir üçüncü sayı eklersek, eleman atlayarak ilerliyoruz. Yani :
print(renkler[0:4:2]) # ['kırmızı', 'beyaz']
Son not olarak şu bilgiyi de verelim, atlama sayısı negatif olursa liste yine tersten işlenecektir. O zaman özet tablomuz gelsin :
işlem |
kod |
sonuç |
---|---|---|
ilk 2 eleman |
renkler[:2] |
['kırmızı', 'siyah'] |
son 2 eleman |
renkler[-2:] |
['beyaz', 'gri'] |
son 3 eleman hariç hepsi |
renkler[:-3] |
['kırmızı'] |
her 2. eleman |
renkler[::2] |
['kırmızı', 'beyaz'] |
ters liste |
renkler[::-1] |
['gri', 'beyaz', 'siyah', 'kırmızı'] |
Evet yine biraz zorladık sizi belki ama bunlar temel konular, ne kadar iyi öğrenirsek Pythonu o kadar iyi kullanırız. Online Python denemelerimizi ihmal etmeyelim. İyi çalışmalar.
- Python 117 - Numpy 2 / 11.07.2021
- Python 116 - Pythonu online ve kütüphaneleriyle birlikte kullanmak / 04.07.2021
- Python 115 - Pythonda Kütüphaneler ve NumPy / 27.06.2021
- Python 114 - Alıştırmalar / 20.06.2021
- Python 113 - String İşlemleri / 13.06.2021
- Python 112 - For ve While döngüleri / 30.05.2021
- Python 111 - Özet / 23.05.2021
- Python 110 - Fonksiyonlar / 29.03.2021
- Python 109 - Slicing / 28.02.2021