Index i Python
Ett index i Python representerar en position i en sekvens. Vanligast är att detta avser en position i en sträng eller en lista. Indexering i Python, liksom i de flesta andra programmeringsspråk, börjar vid 0. Till exempel:
indexValueList =
Varje värde i den här listan representerar också sitt eget index. Observera att det första objektet i listan faktiskt ligger på index 0. På samma sätt är det maximala indexet i listan lika med listans längd minus ett.
För att komma åt elementet i en lista vid ett givet index använder du indexeringsnotationen med hakparenteser på följande sätt:
>>> novels =
>>> novels
'Jane Eyre'
>>> novels
'The Tenant of Wildfell Hall'
Notera att negativa indikationer också är giltiga i Python. Till exempel:
>>> novels
'The Tenant of Wildfell Hall'
>>> novels
'Wuthering Heights'
>>> novels
'Jane Eyre'
Strängar kan också nås via index. Till exempel:
>>> name = "Brontë"
>>> print name
ë
IndexFel i Python
Att stöta på ett IndexFel i Python innebär att du försökte komma åt ett index i listan som inte finns. Intervallet av giltiga index för en lista är där
n
är lika med listans längd. Om du försöker komma åt något som är större än index n - 1
kommer Python att ge ett indexfel utanför intervallet:
>>> suits =
>>> print suits
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
För negativ indexering kan du inte överskrida listans längd i motsatt riktning. Du kan alltså inte överskrida index -n
.
För att bestämma längden på en sekvenstyp kan du använda den inbyggda funktionen len()
:
>>> len()
4
>>> len("Hat")
3
Funktionen len()
returnerar antalet element i den sekvens som ges som parameter. För att hitta det högsta tillåtna indexet för en sekvens subtraherar du helt enkelt ett från detta antal.
Den överlägset vanligaste orsaken till IndexErrors i Python är att man ligger fel med ett index i endera riktningen. Kom bara ihåg att för en lista med längden n
är de maximalt tillåtna indexen n - 1
i positiv riktning och -n
i negativ riktning.