aralık python dışında liste dizini

Python işlevleri ve meth

IndexErrors, Python'daki en yaygın çalışma zamanı hatası türlerinden biridir. Var olmayan bir Python listesi içindeki bir dizin değerine erişmeye çalıştığınızda bunlar ortaya çıkar. Çoğu durumda, dizin hatalarının çözülmesi kolaydır. Sadece biraz hata ayıklama yapmanız gerekiyor.

Bu eğitimde, “indexerror: liste dizini aralık dışında” hata. Nasıl çalıştığını tartışacağız ve çözebilmemiz için bu hatanın mevcut olduğu bir örnek senaryo üzerinde yürüyeceğiz.




Sorun: indexerror: list index out of range

As her zaman, başlamak için en iyi yer hata mesajımızı okumak ve ayrıştırmaktır: 

indexerror: list dizin dışı aralık

Bu hata mesajı bize, dizin konumu olmayan bir dizi içindeki bir değere erişmeye çalıştığımızı bildirir.

Python'da dizin numaraları 0'dan başlar. İşte tipik bir Python dizisi:

programming_languages ​​= ["Java", "Python", "C++"] 

Bu dizi üç değer içerir. İlk liste öğesi Java, 0 dizin değerine sahiptir. Sonraki her değerin, bir öncekinden daha büyük bir dizin numarası 1 vardır. Örneğin, Python'un dizin değeri 1'dir.

İndeks konumu 3'teki bir öğeye erişmeye çalışırsak, bir hata döndürülür. Dizimizdeki son öğenin dizin değeri 2'dir.




Örnek Senaryolar (ve Çözümler)

“liste indeksi aralık dışında” hata ortaya çıkıyor:

Katılımcıların %81'i, bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan daha az zaman harcadı.

İkisini de inceleyelim. bu senaryolardan bazıları.

Listeler Sıfırdan İndekslenir

Aşağıdaki program, “programming_languages” Python kabuğuna:

programming_languages ​​= ["Java", "Python", "C++"] sayım = 0 while count <= len(programming_languages): print(programming_languages[count]) count += 1

Önce iki değişken tanımladık. “programming_languages” değişkeni konsola yazdırmak istediğimiz dillerin listesini saklar. “count” konsola kaç değer yazdırdığımızı izlemek için kullanılır.

Sonra, bir while döngüsü. Bu döngü, “programming_languages” “count” içinde saklanan dizin konumunda. Ardından, “count” değişken. Bu döngü, “count” artık “programming_languages” list.

Kodumuzu çalıştırmayı deneyelim:

Java Python C++ Geri İzleme (en son çağrı son): Dosya "main.py", satır 5,  print(programming_languages[count]) IndexError: liste dizini aralık dışında

Listemizdeki tüm değerler konsola yazdırılıyor ancak bir hata oluşuyor. Sorun şu ki, döngümüz “count” artık “programming_languages” uzunluğundan küçük veya ona eşit değil. Bu, son yinelemenin şunları kontrol edeceği anlamına gelir:

programming_languages[3]

Bu değer mevcut değil. Bu bir IndexError'a neden olur. Bu sorunu çözmek için operatörümüzü <= yerine < olarak değiştirebiliriz. Bu, listemizin yalnızca “count” artık “programming_languages” uzunluğundan daha az değil. Bu revizyonu yapalım:

Kodumuz şunu döndürür:

Java Python C++

Hatayı başarıyla çözdük! Döngümüz artık programlama_dillerini yazdırmaya çalışmıyor[3]. “count” 3'e eşittir çünkü 3, “programming_languages” uzunluğundan küçük değildir.


range() Kullanmayı Unutun

Bir sayı listesi üzerinde yineleme yaparken, bir range() ifadesi. Bu listedeki öğelere erişiyorsanız bir hata oluşabilir.

Şu kodu göz önünde bulundurun:

ages = [9, 10, 9] yaş olarak yaş için: print(ages[age])

Bu kod, “ages” dizisindeki tüm değerleri yazdırmalıdır. Bu dizi, bir ortaokul sınıfındaki öğrencilerin yaşlarını içerir. Programımızı çalıştıralım ve ne olduğunu görelim:

Geri izleme (en son çağrı en son): Dosya "main.py", satır 4, 'de ; print(ages[age]) IndexError: liste dizini aralık dışında

Bir hata raistir ed. “age”ın değerini görmek için döngümüze bir print ifadesi ekleyelim. ne olduğunu görmek için her yinelemede:

yaş = [9, 10, 9] için age in age: print(age) print(ages[age])

Kodumuz şunu döndürür:

9 Geri İzleme (en son arama son): Dosya "main.py", satır 5,  print(ages[age]) IndexError: liste dizini aralık dışında

İlk yaş 9, konsola yazdırılır. Ancak, “age” "çağlar"dan gerçek bir değerdir. Bu bir dizin numarası değil. “print(ages[age])” kod satırında, indeks numarasına göre bir yaşa erişmeye çalışıyoruz.

Kodumuzu çalıştırdığımızda, yaşları[9] kontrol eder. “age” ilk yinelemede 9'dur. “yaşlarımızda” bu değere sahip listeleyin.

Bu sorunu çözmek için, yaş listemizi yinelemek için bir range() ifadesi kullanabiliriz:

ages = [9, 10, 9] for age in range(0, len(ages)): print(ages[age])

Kodumuzu tekrar çalıştıralım:

"Python.Engineering hayatıma en ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir eğitim kampıyla eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayalimdeki işi buldum. hayattaki değerlerim ve hedeflerim ile uyumlu!"

Venüs, Rockbot'ta Yazılım Mühendisi

“çağlar&rdquodaki tüm değerler ; dizi konsola yazdırılır. range() ifadesi, belirli bir aralıktaki sayıların bir listesini oluşturur. Bu durumda, [0, 1, 2] aralığı oluşturulur. Bu sayılar daha sonra “ages” dizin numaralarına göre.


Alternatif olarak, indeksleme kullanmadan bir “for…in” döngüsü kullanabiliriz:

ages = [9, 10, 9] for age in age: print(age)

Bu kod şunu döndürür:

9 10 9

Kodumuz, “ages” dizisinden dizine göre herhangi bir değere erişmeye çalışmaz. döngü, “ages” dizisindeki her değeri yineler ve konsola yazdırır.






Sonuç

IndexError'lar her zaman olur. “indexerror: liste dizini aralık dışında” hatası, listede var olmayan bir öğeye erişmeye çalışmadığınızdan emin olmalısınız.

Bir öğeye erişmek için bir döngü kullanıyorsanız, bu döngünün aşağıdakileri hesaba kattığından emin olun. listelerin sıfırdan indekslenmesi gerçeği. Bu sorunu çözmezse, her bir öğeye dizin değerine göre erişmek için range() kullandığınızdan emin olun.

Artık “indexerror'ı çözmeye hazırsınız: liste dizini aralık dışında” Python uzmanı gibi bir hata!





aralık python dışında liste dizini: StackOverflow Questions

Tutorials