aralık python dışında liste dizini

IndexErrors, Python’daki en yaygƒ±n çalƒ±≈üma zamanƒ± hatasƒ± turlerinden 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 ç√∂zulmesi 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 uzerinde yuruyeceƒü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:

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:

Bu dizi uç deƒüer içerir. ƒ∞lk liste √∂ƒüesi Java, 0 dizin deƒüerine sahiptir. Sonraki her deƒüerin, bir √∂ncekinden daha buyuk 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√∂ndurulur. Dizimizdeki son √∂ƒüenin dizin deƒüeri 2’dir.

Örnek Senaryolar (ve Çözumler)

"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. Bugun 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:

√ñ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√∂ngusu. Bu d√∂ngu, "programming_languages‚" "count‚" içinde saklanan dizin konumunda. Ardƒ±ndan, "count‚" deƒüi≈üken. Bu d√∂ngu, "count‚" artƒ±k "programming_languages‚" list.

Kodumuzu çalƒ±≈ütƒ±rmayƒ± deneyelim:

Listemizdeki tum deƒüerler konsola yazdƒ±rƒ±lƒ±yor ancak bir hata olu≈üuyor. Sorun ≈üu ki, d√∂ngumuz "count‚" artƒ±k "programming_languages‚" uzunluƒüundan kuçuk veya ona e≈üit deƒüil. Bu, son yinelemenin ≈üunlarƒ± kontrol edeceƒüi anlamƒ±na gelir:

Bu deƒüer mevcut deƒüil. Bu bir IndexError’a neden olur. Bu sorunu ç√∂zmek için operat√∂rumuzu <= 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öndurur:

Hatayƒ± ba≈üarƒ±yla ç√∂zduk! D√∂ngumuz artƒ±k programlama_dillerini yazdƒ±rmaya çalƒ±≈ümƒ±yor[3]. "count‚" 3’e e≈üittir çunku 3, "programming_languages‚" uzunluƒüundan kuçuk deƒüildir.

range() Kullanmayı Unutun

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

Şu kodu göz önunde bulundurun:

Bu kod, "ages‚" dizisindeki tum 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:

Bir hata raistir ed. "age‚"ƒ±n deƒüerini g√∂rmek için d√∂ngumuze bir print ifadesi ekleyelim. ne olduƒüunu g√∂rmek için her yinelemede:

Kodumuz şunu döndurur:

ƒ∞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:

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!"

Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

"çaƒülar&rdquodaki tum 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√∂ngusu kullanabiliriz:

Bu kod şunu döndurur:

Kodumuz, "ages‚" dizisinden dizine g√∂re herhangi bir deƒüere eri≈ümeye çalƒ±≈ümaz. d√∂ngu, "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√∂ngu kullanƒ±yorsanƒ±z, bu d√∂ngunun 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!