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.

Un valor de lista almacenado en la variable spam, mostrando a qué valor se refiere cada índice

Por 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.'

Deja una respuesta