Listas: creación, acceso y modificación

Lectura
25 min~6 min lectura
CONCEPTO CLAVE: Las listas en Python son estructuras de datos fundamentales que permiten almacenar múltiples elementos en una sola variable. Son mutables, ordenadas y pueden contener elementos de diferentes tipos. Son el punto de partida esencial para organizar y manipular datos en tus programas.

¿Qué es una lista en Python?

Una lista es una colección ordenada de elementos que puedes almacenar en una sola variable. Piensa en ella como una fila de casilleros numerados, donde cada casillero contiene un valor. A diferencia de las variables simples que almacenan un solo dato, las listas te permiten almacenar múltiples datos relacionados.

En Python, las listas se crean usando corchetes [] y separando los elementos con comas. Esta simplicidad las convierte en la estructura de datos más utilizada por programadores de todos los niveles.

Creación de listas

Crear una lista en Python es muy intuitivo. Puedes crear listas de diferentes maneras:

Creación directa

# Lista de números
numeros = [1, 2, 3, 4, 5]

# Lista de textos (strings)
frutas = ["manzana", "plátano", "naranja"]

# Lista vacía
vacia = []

# Lista con diferentes tipos de datos
mezclada = [1, "hola", 3.14, True]

# Lista usando la función list()
lista_desde_rango = list(range(1, 6))  # [1, 2, 3, 4, 5]
lista_desde_texto = list("python")      # ['p', 'y', 't', 'h', 'o', 'n']

print(numeros)    # Output: [1, 2, 3, 4, 5]
print(frutas)     # Output: ['manzana', 'plátano', 'naranja']
print(mezclada)   # Output: [1, 'hola', 3.14, True]
💡 Consejo: Aunque puedes mezclar tipos de datos en una lista, se recomienda mantener listas con elementos del mismo tipo para mejor organización y claridad del código.

Acceso a elementos: Índices

Cada elemento en una lista tiene una posición llamada índice. Los índices en Python comienzan en 0, no en 1. Esto significa que el primer elemento tiene índice 0, el segundo tiene índice 1, y así sucesivamente.

colores = ["rojo", "verde", "azul", "amarillo", "morado"]

print(colores[0])   # Output: 'rojo' (primer elemento)
print(colores[1])   # Output: 'verde' (segundo elemento)
print(colores[4])   # Output: 'morado' (quinto elemento)
print(colores[-1])  # Output: 'morado' (último elemento)
print(colores[-2])  # Output: 'amarillo' (penúltimo elemento)
📌 Índices negativos: Python permite usar índices negativos para acceder a elementos desde el final. El índice -1 siempre se refiere al último elemento, -2 al penúltimo, y así sucesivamente.

Rebanado de listas (Slicing)

También puedes obtener múltiples elementos usando el rebanado o slicing. La sintaxis es lista[inicio:fin], donde se incluye el elemento inicial y se excluye el final.

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numeros[2:7])    # Output: [2, 3, 4, 5, 6]
print(numeros[:5])     # Output: [0, 1, 2, 3, 4]
print(numeros[5:])     # Output: [5, 6, 7, 8, 9]
print(numeros[::2])    # Output: [0, 2, 4, 6, 8] (cada segundo elemento)
print(numeros[::-1])   # Output: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (lista invertida)

Modificación de listas

Una de las ventajas principales de las listas es que son mutables, es decir, puedes modificar sus elementos después de crearlas.

Modificar un elemento específico

frutas = ["manzana", "plátano", "naranja"]
print(frutas)  # Output: ['manzana', 'plátano', 'naranja']

frutas[0] = "fresa"  # Cambia el primer elemento
print(frutas)  # Output: ['fresa', 'plátano', 'naranja']

frutas[-1] = "uva"  # Cambia el último elemento
print(frutas)  # Output: ['fresa', 'plátano', 'uva']

Agregar elementos

colores = ["rojo", "verde"]

# append() - agrega al final
colores.append("azul")
print(colores)  # Output: ['rojo', 'verde', 'azul']

# insert() - agrega en una posición específica
colores.insert(1, "amarillo")
print(colores)  # Output: ['rojo', 'amarillo', 'verde', 'azul']

# extend() - agrega múltiples elementos
colores.extend(["morado", "naranja"])
print(colores)  # Output: ['rojo', 'amarillo', 'verde', 'azul', 'morado', 'naranja']

Eliminar elementos

frutas = ["manzana", "plátano", "naranja", "fresa"]

# remove() - elimina por valor
frutas.remove("plátano")
print(frutas)  # Output: ['manzana', 'naranja', 'fresa']

# pop() - elimina por índice (devuelve el elemento eliminado)
eliminado = frutas.pop(1)
print(frutas)   # Output: ['manzana', 'fresa']
print(eliminado) # Output: 'naranja'

# del - elimina por índice
del frutas[0]
print(frutas)  # Output: ['fresa']

# clear() - elimina todos los elementos
frutas.clear()
print(frutas)  # Output: []
⚠️ Precaución: Si usas remove() y el valor no existe, Python generará un error ValueError. Siempre verifica que el elemento exista antes de intentar eliminarlo, o usa un bloque try-except.

Funciones útiles para listas

FunciónDescripciónEjemplo
len()Devuelve la longitud de la listalen([1,2,3]) → 3
max()Devuelve el valor máximomax([1,5,3]) → 5
min()Devuelve el valor mínimomin([1,5,3]) → 1
sum()Devuelve la suma de elementossum([1,5,3]) → 9
sorted()Devuelve una lista ordenada (sin modificar la original)sorted([3,1,2]) → [1,2,3]
count()Cuenta las ocurrencias de un elemento[1,2,2].count(2) → 2
index()Devuelve el índice de la primera ocurrencia['a','b'].index('b') → 1
numeros = [4, 2, 8, 1, 5]

print(len(numeros))    # 5
print(max(numeros))     # 8
print(min(numeros))     # 1
print(sum(numeros))     # 20
print(sorted(numeros))  # [1, 2, 4, 5, 8]
print(numeros)         # [4, 2, 8, 1, 5] (la lista original no cambió)

Comprobación de pertenencia

Puedes verificar si un elemento existe en una lista usando el operador in:

frutas = ["manzana", "plátano", "naranja"]

print("manzana" in frutas)    # True
print("uva" in frutas)        # False
print("fresa" not in frutas)  # True
💡 Consejo: El operador in es más eficiente en listas que otros métodos, especialmente cuando necesitas verificar pertenencia frecuentemente. Para listas muy grandes, considera usar conjuntos (set) en lugar de listas.

Recorrer una lista

Para acceder a cada elemento de una lista, puedes usar un bucle for:

frutas = ["manzana", "plátano", "naranja"]

# Recorrido simple
for fruta in frutas:
    print(fruta)

# Recorrido con enumerate (índice y valor)
for indice, fruta in enumerate(frutas):
    print(f"Índice {indice}: {fruta}")

Práctica guiada

  1. Crea una lista con los números del 1 al 10: numeros = list(range(1, 11))
  2. Imprime el tercer y el octavo elemento.
  3. Cambia el valor del elemento en posición 2 a 100.
  4. Agrega el número 11 al final de la lista.
  5. Elimina el primer elemento usando pop().
  6. Imprime la longitud final de la lista.
Ver más

Solución al ejercicio:

numeros = list(range(1, 11))
print(f"Lista inicial: {numeros}")

# Tercer y octavo elemento (índices 2 y 7)
print(f"Tercer elemento: {numeros[2]}")
print(f"Octavo elemento: {numeros[7]}")

# Cambiar valor en posición 2
numeros[2] = 100
print(f"Después de cambiar posición 2: {numeros}")

# Agregar 11 al final
numeros.append(11)
print(f"Después de append: {numeros}")

# Eliminar primer elemento
primero = numeros.pop(0)
print(f"Elemento eliminado: {primero}")
print(f"Lista final: {numeros}")
print(f"Longitud final: {len(numeros)}")
"Las listas son como los cimientos de una casa: cuando las dominas bien, todo lo demás en Python se vuelve más fácil de construir."
📌 Resumen: Las listas son colecciones ordenadas y mutables. Se crean con corchetes [], se accede por índice (empezando en 0), se modifican con métodos como append(), insert(), remove() y pop(). Son esenciales para cualquier programa en Python.
🧠 Quiz: Listas en Python

¿Cuál es el output del siguiente código?

frutas = ["manzana", "plátano", "cereza"]
frutas.insert(1, "uva")
print(frutas[2])

  • A) "manzana"
  • B) "uva"
  • C) "plátano"
  • D) "cereza"
✅ Respuesta: C) "plátano" Explicación: La lista inicial es ["manzana", "plátano", "cereza"]. Al insertar "uva" en la posición 1, la lista se convierte en ["manzana", "uva", "plátano", "cereza"]. Por lo tanto, el elemento en índice 2 es "plátano".
🧠 Quiz 2

¿Cómo crearías una lista con los números del 1 al 5?

  • A) [1-5]
  • B) list(1, 2, 3, 4, 5)
  • C) list(range(1, 6))
  • D) [1, 2, 3, 4, 5]
✅ Respuesta: C) list(range(1, 6)) o D) [1, 2, 3, 4, 5] Ambas opciones son válidas. La opción C es más flexible para rangos grandes, mientras que D es más directa para listas pequeñas y conocidas.

Con esto concludes la lección sobre listas. Recuerda practicar creando tus propias listas y experimentando con los diferentes métodos y operaciones. ¡Las listas son fundamentales y las usarás constantemente en tu camino como programador Python!