Nejlepší odpověď
Dobrý večer,
Některé jazyky naštěstí implementují bezpečný objekt přístup, i když toho v Pythonu moc nevím, můžeme předpokládat, že objekt, ke kterému přistupujete, má kontrolu rozsahu.
Z tohoto velmi jednoduchého tvrzení můžeme pochopit, že Python vytváří objekty na většině svých základních datové typy a implicitně volá své přistupující objekty podle potřeby, transformace a kontrola rozsahu, převody atd., takže tam máte logickou chybu, zkontrolujte prosím, proč jste přistupovali k n-tici mimo její rozsah, zjevně má kód nějakou chybu v indexu a / nebo velikost n-tice.
To je poznámka, která označuje, že ostatní jazyky jsou tolerantnější v tom, co vám umožňují, což pak vede k takzvané chybě běhu, protože přístup mimo rozsah znamená, že buď číst neúmyslná data a mohl by také zapisovat do paměti jiného objektu, a tedy poškodit data, což by mělo za následek buď ztrátu dat, nebo spuštění ti me crash.
S pozdravem
Jean-François
Odpověď
V pythonu je seznam proměnlivý, takže velikost není pevná.
Vzhledem k tomu, že velikost není pevná.
Na základě vámi přiřazených hodnot seznamu, správa paměti pythonu – interně vytvoří seznam (dostupný index) v vzoru růstu 0, 4 , 8, 16, 25, 35, 46, 58, 72, 88,… místo toho, abychom mnohokrát volali realloc ().
Ale přiřazené hodnoty seznamu jsou menší než seznam ( dostupný index).
Takže u seznamu je dostupný index > přiřazený index.
Pokud se pokusíte získat přístup k prázdnému nebo Žádnému prvku od ukazující na dostupný index seznamu, poté získáte „ Seznamový index mimo chybu rozsahu“.
Otevřete python a zašpinte si ruce s th je pod kódem, abychom lépe porozuměli.
>> x = list (1234)
>> x
[1, 2, 3, 4]
>> length = len (x)
4
>> x [délka ]
Chyba indexu: index seznamu mimo rozsah
POZNÁMKA: Index seznamu začíná od nuly (0).
Ale zde je délka čtyři.
Přiřazení výše uvedeného seznamu je následující:
x [0] = 1
x [1] = 2
x [2] = 3
x [3] = 4
x [4] =?
Pokud se pokusíte získat přístup k x [4], což je Pokud neexistuje , index seznamu mimo rozsah přijde.
Pro lepší pochopení toho, jak seznamy interně přidělují paměť, přejděte na tento odkaz Seznam Pythonu implementace .
Děkuji !!!