26. Índices de listas

Para obtener y manejar los datos de una lista se pueden utilizar índices y rebanadas igual que se utilizaban con las cadenas de texto:

>>> lista = ['a', 'b', 'c', 'd', 'e']
>>> lista[0]
    'a'
>>> lista[3]
    'd'
>>> lista[-1]
    'e'

Este esquema puede ayudar a entender la posición de los índices:

[ 'a', 'b', 'c', 'd', 'e' ]
 ^    ^    ^    ^    ^   ^
 0    1    2    3    4   5
-5   -4   -3   -2   -1

Los índices entre corchetes devuelven el elemento que se encuentra en esa posición de la lista, comenzando por la primera posición en el índice cero.

Rebanadas

Por su parte las rebanadas devuelven otra lista compuesta por los elementos que se encuentren entre dos índices:

>>> lista[0:1]
    ['a']

>>> lista[1:-1]
    ['b', 'c', 'd']

>>> lista[10:20]   # Índices fuera de rango devuelven una lista vacía
    []

>>> lista[:3]
    ['a', 'b', 'c']

>>> lista[3:]
    ['d', 'e']

Modificación de elementos

Al contrario que con las cadenas de texto, en las listas si que se pueden modificar sus elementos cambiándolos por otro valor:

>>> lista = ['a', 'b', 'c', 'd', 'e']

>>> # Cambia el primer elemento de la lista
>>> lista[0] = 'A'
>>> lista
    ['A', 'b', 'c', 'd', 'e']

>>> # Cambia los elementos 3º y 4º de la lista por otra lista
>>> lista[2:4] = ['=', 'X']
    ['A', 'b', '=', 'X', 'e']

Sentencia del

La sentencia del (palabra que proviene de delete) elimina un elemento de la lista que se encuentre en una posición determinada:

>>> lista = [1, 2, 3, 4, 5, 6]
>>> del lista[0]
>>> lista
    [2, 3, 4, 5, 6]

>>> del lista[2]
>>> lista
    [2, 3, 5, 6]

También se pueden utilizar rebanadas con la sentencia del:

>>> lista = [1, 2, 3, 4, 5, 6]
>>> del lista[1:3]
>>> lista
    [1, 4, 5, 6]

Ejercicios

  1. Escribe un programa que defina una lista con los 10 primeros números primos. A continuación debe imprimir el primer número primo, el tercero y el séptimo.

  2. Modifica el programa anterior para que imprima la suma de los 4 primeros números primos. Debes programar un bucle que cuente desde 0 hasta 3 y utilizar estos números como índices para recuperar los números primos de la lista.

  3. Escribe un programa que defina una lista con tres nombres. El programa debe imprimir la lista, modificar el segundo nombre y volver a imprimir la lista modificada.

  4. Escribe un programa que defina una lista con las primeras 6 letras del abecedario en mayúsculas.

    Imprime una sublista desde la 'B' hasta la 'D'.

    Imprime una sublista desde la 'C' hasta el final.

  5. Modifica el programa anterior para que borre las posiciones pares de la lista y que luego imprima la lista resultante:

    ['A', 'C', 'E']
    

    Ten en cuenta que a medida que se borran elementos de la lista, los elementos posteriores cambian de posición.

  6. Escribe un programa que defina una lista con las primeras 6 letras del abecedario en mayúsculas. A continuación un bucle for debe cambiar cada una de las letras por su valor en minúsculas gracias al método .lower()`.

    El bucle for debe medir la longitud de la lista con la función len().

    Pista:

    lista = ['A', ... ]
    for i in range( ... ):
        lista[i] = ...
    print(lista)