Yani Python'da bir liste veya diziyle çalışıyordunuz ve muhtemelen onu dilimlemeye çalıştınız. Ancak beklenen sonuç yerine, "liste dizini aralık dışında" yazan bir hata alırsınız. Merak etmeyin herkesin başına gelebilir.
Bu hatanın ne anlama geldiğini, nedenini ve daha fazla uzatmadan nasıl kaldırılacağını inceleyelim.
Python'da "liste dizini aralık dışı" hatası ne anlama geliyor?
Python bir "liste dizini aralık dışında" hatası verdiğinde, bu, listeyi son dizininin ötesine ayırmaya çalıştığınız anlamına gelir.
Python, bir listedeki her bir öğeyi indeksine göre tanımlar. Ve bir listenin indeksi sıfırdan başlar. Örneğin, beş öğeli bir listeniz olduğunda, ilk öğesi sıfır indeksinde, sonuncusu ise dördüncü indekstedir.
Örneğin, beş programlama dilinden oluşan bir listede:
Diller = ["Python", "Git", "PHP", "C", "Perl"]
Yukarıdaki liste için indeksleme sıfır ile dört arasındadır. Bu nedenle, aşağıda gösterildiği gibi beşinci öğeyi yazdırmak için kesmeye çalışmak bir hata veriyor:
yazdır (diller[5])
Çıktı:
IndexError: liste dizini aralık dışında
Yukarıdaki örnekte Python, listedeki beşinci dizini aramaya çalışır ve onu bulamayınca liste dizini hatası verir. Bunun nedeni, ilk elemanın (Python) sıfır indeksinde, sonuncunun (Perl) ise dördüncü indekste olmasıdır.
"Liste dizini aralık dışı" hatasının temeli budur. Söylendiği gibi, Python, bir listeyi son dizininin ötesinde dilimlemeye çalıştığınızda onu atar.
Python'da "liste dizini aralık dışı" Hatası Nasıl Kaldırılır
Peki bu hatayı nasıl kaldırabilirsiniz? Bu kolay.
Yukarıdaki bir önceki bölüme ek olarak, bir kullanarak dizinleri yazdırabilirsiniz. içinliste anlamada döngü:
indeksler = [dillerde i için diller.index (i)]
yazdır (dizinler)
Çıktı:
[0, 1, 2, 3, 4]
Bir listenin indeksi, programlamada dilimlemenin temelidir. Böylece yukarıdaki (4) çıktısı için listenin en yüksek indeksini bildiğiniz için dilim limitini deşifre edebilirsiniz.
Bu nedenle, listeyi dilimlemek ve son öğeyi almak için:
yazdır (diller[4])
Çıktı:
Perl
Şimdi doğru sonucu veriyor.
Dizinini Kullanarak Listede Döngü Yapmak İstiyorsanız Ne Olur?
düzenli yanı sıra döngü için Python, bir listeyi yinelemek için dizin kavramını da kullanabilirsiniz. Bu yöntem zahmetli görünse de bazen kaçınılmazdır. Örneğin, bir listeyi ters sırada sıralamak istiyorsanız kullanışlı olur.
Bu yöntem, bir başlangıç indeksi ayarlayarak ve onu mevcut son indekse kadar bir artırarak veya azaltarak çalışır.
Artan indeks numarasına sahip öğeleri yazdırmak için (ilk ila son öğe), örneğin:
indeks = 0 # İlk dizin
i için Dillerde:
yazdır (Diller[indeks])
dizin +=1
Çıktı:
piton
Gitmek
PHP
C
Perl
Ancak ilk dizini sıfır yerine bir olarak ayarlarsanız ne olur? Bir göz atın:
indeks = 1 # İlk dizin
i için Dillerde:
yazdır (Diller[indeks])
dizin +=1
Çıktı:
Gitmek
PHP
C
Perl
IndexError: liste dizini aralık dışında
Yukarıdaki örnekte, indeksleme ikinci öğeden başlar (birinci indeks, Gitmek). Bu nedenle, artarken döngü, beş öğenin sayımını tamamlayana kadar durmaz. Bu, endeksi son öğeye kadar bir artırmaya zorlar.
Bu nedenle dilim, mevcut olmayan beşinci bir dizine ulaşır. Yani bir index hatası veriyor. Bu, her bir öğe için endeksin aşağıdaki düzende arttığı anlamına gelir:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Doğru desen yerine:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Gördüğünüz gibi, yukarıdaki indeksin en yüksek değeri dörttür; bu, döngü indekslemeyi sıfırdan artırmaya başladığından beri doğrudur.
Bu nedenle, bu bölümdeki ilk örnekte yaptığınız gibi ilk dizini sıfıra ayarlamak "liste dizini aralık dışı" hatasını kaldırır:
indeks = 0 # İlk dizin
i için Dillerde:
yazdır (Diller[indeks])
dizin +=1 #Her yineleme için dizini bir artır
Öğeleri ters sırayla çıktılamak için bu konsepti uygulamak için dizinin uzunluğundan bir çıkarmanız gerekir. Bu, endeksi dörtten başlayıp ilk dizine, sıfıra geri saymaya zorlar.
Bu, örneğin bir veritabanı gibi bir kaynaktan gelen listenin uzunluk değerinden emin değilseniz yararlıdır.
İşte bir örnek:
indeks = (len (Diller)-1)
i için Dillerde:
yazdır (Diller[indeks])
dizin -=1 #Her yineleme için dizini bir azalt
Çıktı:
Perl
C
PHP
Gitmek
piton
Ancak listenin uzunluğundan bir tane çıkarmamak, "liste aralık dışı dizini" hatasını verir:
indeks = (len (Diller)-1)
i için Dillerde:
yazdır (Diller[indeks])
dizin -=1
Çıktı:
IndexError: liste dizini aralık dışında
Yukarıdaki kod, listenin uzunluğu beş olduğu için bir dizin hatası verir ve en yüksek dizin dört iken, beşten sıfıra endekslemeye başlamaya çalışır. Bu, listenin beşinci bir dizine (altıncı öğe) sahip olmadığı anlamına gelir.
Python'da Yaratıcı İşleme Listeleri Alın
Python'un hataları insan dostudur ve genellikle okunabilir. Her zaman, bu onları makul bir ölçüde izlenebilir kılar.
Öğrendiğiniz gibi, liste dizini aralık dışı hatasını kaldırmak oldukça kolaydır. Liste ne kadar karmaşık olursa olsun, ilerideki programlarınızda bu hatayla karşılaşırsanız, sorunu çözmek için bu gönderide açıklanan kavramları uygulayabilirsiniz.
Karmaşık listelerle yaratıcı olmaktan çekinmeyin. Ayrıca, her şeyi daha iyi anlamak için boş zamanlarınızda Python'da listeleri nasıl sıralayacağınızı öğrenmek isteyebilirsiniz.
Birden çok veri türü içeren listeler hızla elden çıkabilir. Bunları Python ile nasıl sıralayacağınız aşağıda açıklanmıştır.
Sonrakini Oku
- Programlama
- piton
- Programlama
- Kodlama İpuçları
Idowu akıllı teknoloji ve üretkenlik konusunda tutkulu. Boş zamanlarında kodlamayla uğraşıyor ve canı sıkılınca satranç tahtasına geçiyor ama arada sırada rutinden kopmayı da seviyor. İnsanlara modern teknolojinin yolunu gösterme tutkusu onu daha fazla yazmaya motive ediyor.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın