logo
23 TEMMUZ 2025

Python 109 - Slicing

28.02.2021 00:00:00

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 siyaha şö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.

Yorumlar
Yorum bulunmuyor.
Yorumlarınızı paylaşın

--
 
Nahit Taşpınar / diğer yazıları
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
İsrail ordusu, Batı Şeria'da iki hastaneyi kuşattı
Nablus kentine baskın düzenlendi
Ateşkesi ihlal eden İsrail, baskı yapılan Lübnan!
Hizbullah'ın silah bırakması isteniyor
Memleket Partisi resmen kapatıldı
Karar oy çokluğuyla alındı
Fidan, El Salvadorlu mevkidaşı ile basın toplantısında konuştu
"İsrail, Suriye'yi bölmeyi amaçlamaktadır"
İslam devletleri, Gazze'yi ölüme terk etti
Açıklanan son can kaybı 59 bin 106
Finansal kesim dışındaki firmaların net döviz açığı arttı
Kısa vadeli yükümlülüklerin payı yüzde 38
Bedevi Araplar tahliye ediliyor
Süveyda İsrail işgaline hazır hale getirildi
İnsanlığın dip noktası
Gazze açlıktan ölüyor
Böyle giderse iflaslarda patlama yaşanacak!
Sanayide işler kesat mı kesat!
Bankalara sert eleştiri!
Tekstil ve hazır giyimde konkordato furyası
Gelecek ve DEVA eriyor
Altılı Masa hükümete çalışıyor
İşte nedeni?
Kartlı ödemeler Haziranda düştü
25 ülke İsrail'i Gazze'de ateşkese çağırdı
ABD büyükelçisi bu çağrıyı 'iğrenç' buldu
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
123456789101112131415
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
İsrail ordusu, Batı Şeria'da iki hastaneyi kuşattı
Nablus kentine baskın düzenlendi
Ateşkesi ihlal eden İsrail, baskı yapılan Lübnan!
Hizbullah'ın silah bırakması isteniyor
Memleket Partisi resmen kapatıldı
Karar oy çokluğuyla alındı
Fidan, El Salvadorlu mevkidaşı ile basın toplantısında konuştu
"İsrail, Suriye'yi bölmeyi amaçlamaktadır"
İslam devletleri, Gazze'yi ölüme terk etti
Açıklanan son can kaybı 59 bin 106
Finansal kesim dışındaki firmaların net döviz açığı arttı
Kısa vadeli yükümlülüklerin payı yüzde 38
Bedevi Araplar tahliye ediliyor
Süveyda İsrail işgaline hazır hale getirildi
İnsanlığın dip noktası
Gazze açlıktan ölüyor
Böyle giderse iflaslarda patlama yaşanacak!
Sanayide işler kesat mı kesat!
Bankalara sert eleştiri!
Tekstil ve hazır giyimde konkordato furyası
Gelecek ve DEVA eriyor
Altılı Masa hükümete çalışıyor
İşte nedeni?
Kartlı ödemeler Haziranda düştü
25 ülke İsrail'i Gazze'de ateşkese çağırdı
ABD büyükelçisi bu çağrıyı 'iğrenç' buldu
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
logo

Beşyol Mah. 502. Sok. No: 6/1
Küçükçekmece / İstanbul

Telefon: (212) 624 09 99
E-posta: internet@yenimesaj.com.tr gundogdu@yenimesaj.com.tr


WhatsApp iletişim: (542) 289 52 85


Tüm hakları Yeni Mesaj adına saklıdır: ©1996-2025

Yazılı izin alınmaksızın site içeriğinin fiziki veya elektronik ortamda kopyalanması, çoğaltılması, dağıtılması veya yeniden yayınlanması aksi belirtilmediği sürece yasal yükümlülük altına sokabilir. Daha fazla bilgi almak için telefon veya eposta ile irtibata geçilebilir. Yeni Mesaj Gazetesi'nde yer alan köşe yazıları sebebi ile ortaya çıkabilecek herhangi bir hukuksal, ekonomik, etik sorumluluk ilgili köşe yazarına ait olup Yeni Mesaj Gazetesi herhangi bir yükümlülük kabul etmez. Sözleşmesiz yazar, muhabir ve temsilcilere telif ödemesi yapılmaz.