aralık dışında Python listesi atama dizini

Python işlevleri ve meth

Bir IndexError endişelenecek bir şey değildir. Liste boyutunun dışında olan bir dizine erişmeye çalıştığınızda ortaya çıkan bir hatadır. Bu sorunu nasıl çözersiniz? Nerede gündeme getirilebilir?

Bu makalede, bu soruları yanıtlayacağız. IndexErrors'ın ne olduğunu ve “list atama indeksini aralık dışı” nasıl çözebileceğinizi tartışacağız. hata. Bu hataya tam olarak neyin neden olduğunu görmenize yardımcı olacak bir örnek üzerinden yürüyeceğiz.

Daha fazla uzatmadan başlayalım!




Sorun: indexerror: liste ataması index out of range

Bir hata mesajı aldığınızda yapmanız gereken ilk şey onu okumaktır. Bir hata mesajı size bir hatanın doğası hakkında çok şey söyleyebilir.

Hata mesajımız şudur: indexerror: liste atama indeksi aralık dışında.
< /p>

IndexError bize bir dizine nasıl eriştiğimizle ilgili bir sorun olduğunu söylüyor. Bir dizin, bir liste veya bir dize gibi yinelenebilir bir nesnenin içindeki bir değerdir.

“ liste atama dizini aralık dışında” bize var olmayan bir dizine öğe atamaya çalıştığımızı söylüyor.

Bir listede dizin oluşturmayı kullanmak için listeyi başlatmanız gerekir. Var olmayan bir dizin konumundaki bir listeye bir öğe atamaya çalışırsanız, bu hata ortaya çıkacaktır.

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ı.

Liste atama hatası genellikle for ve while döngülerinde oluşturulur.

“Çilek” kelimesini içeren tüm kekleri toplayan bir program yazacağız. yeni bir diziye. İki değişken tanımlayarak başlayalım:

cakes = ["Strawberry Tart", "Chocolate Muffin", "Strawberry Cheesecake"] çilek = []

İlk değişken kek listemizi saklar. İkinci değişken, tüm çilekli kekleri saklayacak boş bir listedir. Ardından, “cakes” “Çilek” kelimesini içerir.

for in range(0, len(cakes) ): keklerde "Çilek" ise[c]: çilek[c] = kekler[c] print(çilek)

Bir değer “Çilek” içeriyorsa, buna eklenmelidir. yeni dizimiz. Aksi takdirde, hiçbir şey olmayacak. for döngümüz yürütüldüğünde, “çilek” dizi konsola yazdırılmalıdır. Kodumuzu çalıştıralım ve ne olduğunu görelim:

Geri izleme (en son çağrı): Dosya "ana .py", satır 6,  çilek[c] = cakes[c] IndexError: liste atama dizini aralık dışında

Beklediğimiz gibi bir hata oluştu. Şimdi onu çözeceğiz!





Çözüm

Hata mesajımız bize programımızın başarısız olduğu kod satırını söyler:

çilek[c] = cakes[c]

Bu kodla ilgili sorun şu ki, “çilek” listemizde var olmayan bir pozisyona bir değer.

Çilek dizimizi oluşturduğumuzda, değeri yoktur. Bu, indeks numarası olmadığı anlamına gelir. değerler mevcut değil:

çilek[0] çilek[1] …

For döngümüzde bu pozisyonlara değer atamaya çalışıyoruz.Bu pozisyonlar değer içermediği için bir hata döndürülüyor.

Bu sorunu iki şekilde çözebiliriz. yollar.

Append() ile çözüm

 h3>

Öncelikle, “çilek” append() kullanan dizi:

kek = ["Çilekli Tart", "Çikolatalı Muffin", "Çilekli Cheesecake"] çilek = [] c in range(0, len(kek) için): eğer "Çilek" keklerde[c ]: çilek.append(cakes[c]) print(strawberry)

append() yöntemi, diziye bir öğe ekler ve bunun için bir dizin konumu oluşturur. o öğe. Kodumuzu çalıştıralım: [‘Strawberry Tart’, ‘Strawberry Cheesecake’].

Kodumuz çalışıyor!

Dizi Başlatma ile Çözüm

Alternatif olarak, bildirdiğimizde dizimizi bazı değerlerle başlatabiliriz. Bu, “çilek” dizi.

Bir diziyi başlatmak için şu kodu kullanabilirsiniz:

çilek = [] * 10

Bu, 10 boş değer içeren bir dizi oluşturacaktır. Kodumuz şimdi şöyle görünüyor:

cakes = ["Çilekli Tart", "Çikolatalı Muffin", "Çilek Cheesecake"] çilek = [] * 10, aralık(0, len(kek)) için: if "Çilek" in kek[c]: çilek.append(kek[c]) print(çilek)

Kodumuzu çalıştırmayı deneyelim:

['Strawberry Tart', ' Çilekli Cheesecake']

Kodumuz tüm çilekli kekleri içeren bir diziyi başarıyla döndürüyor.

"Python.Engineering hayatıma en çok ihtiyacım olduğu anda ve hızla girdi. bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Yazılım Mühendisi at Rockbot

Bu yöntem, bir dizide tam olarak kaç değer depolayacağınızı bildiğiniz zaman kullanmak için en iyisidir.

Yukarıdaki kodumuz biraz verimsizdir. çünkü “çilek” 10 boş değerle. “keklerimizde” muhtemelen “Çilek” içerebilecek dizi. Çoğu durumda, append() yöntemini kullanmak hem daha zarif hem de daha verimlidir.






Sonuç

IndexErrors, var olmayan bir indeks değerindeki bir öğeyi kullanmaya çalıştığınızda ortaya çıkar. “indexerror: liste atama dizini aralık dışında” var olmayan bir dizin konumuna bir öğe atamaya çalıştığınızda ortaya çıkar.

Bu hatayı çözmek için, bir öğe eklemek için append() kullanabilirsiniz. bir listeye. Bu hatayı önlemek için değerleri eklemeye başlamadan önce de bir liste başlatabilirsiniz.

Artık profesyonel bir Python geliştiricisi gibi liste atama hatasını çözmeye hazırsınız!





aralık dışında Python listesi atama dizini: StackOverflow Questions

Tutorials