Obtención de valores individuales en una lista con índices
Digamos que tienes la lista ['cat', 'bat', 'rat', 'elephant']
almacenada en una variable llamada spam
. El código de Python spam[0]
se evaluaría como 'cat'
, y spam[1]
se evaluaría como 'bat'
, y así sucesivamente. El número entero dentro de los corchetes que sigue a la lista se llama índice. El primer valor de la lista está en el índice 0
, el segundo valor está en el índice 1
, el tercer valor está en el índice 2
, y así sucesivamente. La imagen muestra un valor de la lista asignado a spam
, junto con lo que las expresiones del índice evaluarían. Observe que como el primer índice es 0
, el último índice es uno menos que el tamaño de la lista; una lista de cuatro elementos tiene 3
como último índice.

spam
, mostrando a qué valor se refiere cada índicePor ejemplo, introduzca las siguientes expresiones en el shell interactivo. Comienza asignando una lista a la variable spam
.
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[0]
'cat'
>>> spam[1]
'bat'
>>> spam[2]
'rat'
>>> spam[3]
'elephant'
>>> ['cat', 'bat', 'rat', 'elephant'][3]
'elephant'
➊ >>> 'Hello, ' + spam[0]
➋ 'Hello, cat'
>>> 'The ' + spam[1] + ' ate the ' + spam[0] + '.'
'The bat ate the cat.'
Observa que la expresión 'Hello, ' + spam[0]
➊ se evalúa a 'Hello, ' + 'cat'
porque spam[0]
se evalúa a la cadena 'cat'
. Esta expresión, a su vez, se evalúa como el valor de la cadena 'Hello, cat'
➋.
Python le dará un mensaje de error IndexError
si utiliza un índice que excede el número de valores en su valor de la lista.
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[1]
'bat'
>>> spam[1.0]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
spam[1.0]
TypeError: list indices must be integers or slices, not float
>>> spam[int(1.0)]
'bat'
Los índices sólo pueden ser valores enteros, no flotantes. El siguiente ejemplo provocará un error TypeError
:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[1]
'bat'
>>> spam[1.0]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
spam[1.0]
TypeError: list indices must be integers or slices, not float
>>> spam[int(1.0)]
'bat'
Accediendo a una lista dentro de otra
Las listas también pueden contener otros valores de listas. Se puede acceder a los valores de estas listas de listas utilizando múltiples índices, así:
>>> spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]
>>> spam[0]
['cat', 'bat']
>>> spam[0][1]
'bat'
>>> spam[1][4]
50
El primer índice dicta qué valor de la lista debe utilizarse, y el segundo indica el valor dentro del valor de la lista. Por ejemplo, spam[0][1]
imprime 'bat'
, el segundo valor de la primera lista. Si sólo utiliza un índice, el programa imprimirá el valor completo de la lista en ese índice.
Accediendo a los elementos mediante Índices negativos
Mientras que los índices comienzan en 0
y van hacia arriba, también puede utilizar enteros negativos para el índice. El valor entero -1
se refiere al último índice de una lista, el valor -2
se refiere al penúltimo índice de una lista, y así sucesivamente. Introduzca lo siguiente en el shell interactivo:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[-1]
'elephant'
>>> spam[-3]
'bat'
>>> 'The ' + spam[-1] + ' is afraid of the ' + spam[-3] + '.'
'The elephant is afraid of the bat.'