Chybný index

, Author

Indexy v Pythonu

Index v Pythonu představuje pozici v posloupnosti. Nejčastěji se jedná o pozici v řetězci nebo seznamu. Indexování v jazyce Python, stejně jako ve většině ostatních programovacích jazyků, začíná od 0. Např:

indexValueList =

Každá hodnota v tomto seznamu také představuje svůj vlastní index. Všimněte si, že první položka v seznamu je ve skutečnosti na indexu 0. Stejně tak maximální index do seznamu je roven délce seznamu minus jedna.

Chcete-li přistupovat k prvku v seznamu na daném indexu, použijte zápis indexování v hranatých závorkách takto:

>>> novels =
>>> novels
'Jane Eyre'
>>> novels
'The Tenant of Wildfell Hall'

Všimněte si, že v jazyce Python platí i záporné indexy. Například:

>>> novels
'The Tenant of Wildfell Hall'
>>> novels
'Wuthering Heights'
>>> novels
'Jane Eyre'

K řetězcům lze přistupovat také pomocí indexu. Například:

>>> name = "Brontë"
>>> print name
ë

IndexErrors v Pythonu

Setkání s chybou IndexError v Pythonu znamená, že jste se pokusili přistoupit k indexu seznamu, který neexistuje. Rozsah platných indexů pro libovolný seznam je , kde n je rovna délce seznamu. Pokud se pokusíte přistoupit k čemukoli většímu než index n - 1, Python vyhodí chybu indexu mimo rozsah:

>>> suits =
>>> print suits
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

Při záporném indexování nemůžete překročit délku seznamu v opačném směru. Konkrétně nelze překročit index -n.

Pro určení délky libovolného typu sekvence můžete použít vestavěnou funkci len():

>>> len()
4
>>> len("Hat")
3

Funkce len() vrátí počet prvků jakékoli posloupnosti, která je jí zadána jako parametr. Chcete-li zjistit maximální přípustný index posloupnosti, jednoduše od tohoto čísla odečtěte jedničku.

Zdaleka nejčastější příčinou chyb IndexErrors v jazyce Python je odchylka o jeden index v obou směrech. Stačí si zapamatovat, že pro seznam délky n jsou maximální přípustné indexy n - 1 v kladném směru a -n v záporném směru.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.