Las listas y tuplas son colecciones de datos. Imagina una lista como una caja con múltiples compartimentos donde puedes guardar varios valores. La diferencia: las listas son flexibles (puedes cambiarlas), las tuplas son rígidas (no puedes modificarlas).
Las listas se crean con corchetes [] y pueden contener cualquier tipo de dato.
# Lista vacía
lista_vacia = []
# Lista con números
numeros = [1, 2, 3, 4, 5]
# Lista con strings
frutas = ["manzana", "banana", "naranja"]
# Lista mixta (diferentes tipos)
datos = ["Juan", 25, 1.75, True]
# Lista de listas
matriz = [[1, 2], [3, 4], [5, 6]]
print(numeros) # [1, 2, 3, 4, 5]
print(type(numeros)) # <class 'list'>
Usa índices como en los strings. Comienzan en 0.
frutas = ["manzana", "banana", "naranja", "fresa"]
# Acceso positivo
print(frutas[0]) # manzana
print(frutas[2]) # naranja
# Acceso negativo
print(frutas[-1]) # fresa (último)
print(frutas[-2]) # naranja (penúltimo)
# Longitud
print(len(frutas)) # 4
Extrae partes de una lista, igual que con strings.
numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Primeros 5 elementos
print(numeros[:5]) # [0, 1, 2, 3, 4]
# Desde índice 3 hasta el final
print(numeros[3:]) # [3, 4, 5, 6, 7, 8, 9]
# Desde índice 2 hasta 7
print(numeros[2:7]) # [2, 3, 4, 5, 6]
# Cada 2 elementos
print(numeros[::2]) # [0, 2, 4, 6, 8]
# Invertir lista
print(numeros[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Las listas son mutables (puedes cambiarlas).
frutas = ["manzana", "banana", "naranja"]
# Cambiar un elemento
frutas[1] = "fresa"
print(frutas) # ['manzana', 'fresa', 'naranja']
# Agregar al final
frutas.append("piña")
print(frutas) # ['manzana', 'fresa', 'naranja', 'piña']
# Insertar en posición específica
frutas.insert(1, "kiwi")
print(frutas) # ['manzana', 'kiwi', 'fresa', 'naranja', 'piña']
# Eliminar por índice
frutas.pop(0)
print(frutas) # ['kiwi', 'fresa', 'naranja', 'piña']
# Eliminar por valor
frutas.remove("fresa")
print(frutas) # ['kiwi', 'naranja', 'piña']
Operaciones comunes con listas.
Ordena la lista.
numeros = [3, 1, 4, 1, 5]
# sort() modifica la lista original
numeros.sort()
print(numeros) # [1, 1, 3, 4, 5]
# sorted() devuelve una nueva lista
numeros2 = [3, 1, 4]
ordenados = sorted(numeros2)
print(ordenados) # [1, 3, 4]
Invierte la lista.
numeros = [1, 2, 3]
numeros.reverse()
print(numeros) # [3, 2, 1]
Cuenta cuántas veces aparece un elemento.
numeros = [1, 2, 2, 3, 2]
print(numeros.count(2)) # 3
Encuentra la posición de un elemento.
frutas = ["manzana", "banana", "naranja"]
print(frutas.index("banana")) # 1
Combina dos listas.
lista1 = [1, 2]
lista2 = [3, 4]
# Forma 1: extend()
lista1.extend(lista2)
print(lista1) # [1, 2, 3, 4]
# Forma 2: +
resultado = lista1 + lista2
Vacía la lista.
numeros = [1, 2, 3]
numeros.clear()
print(numeros) # []
Diferentes formas de iterar sobre una lista.
frutas = ["manzana", "banana", "naranja"]
# Forma 1: for simple
for fruta in frutas:
print(fruta)
# Forma 2: con índice
for i in range(len(frutas)):
print(f"{i}: {frutas[i]}")
# Forma 3: enumerate() - índice y valor
for i, fruta in enumerate(frutas):
print(f"{i}: {fruta}")
Las tuplas son como listas, pero inmutables (no puedes cambiarlas).
# Tupla con paréntesis
tupla1 = (1, 2, 3)
# Tupla sin paréntesis
tupla2 = 4, 5, 6
# Tupla con un solo elemento (nota la coma)
tupla3 = (1,)
# Tupla vacía
tupla_vacia = ()
# Tupla mixta
tupla_mixta = ("Juan", 25, 1.75, True)
print(type(tupla1)) # <class 'tuple'>
¡Importante! Una tupla con un solo elemento necesita una coma al final.
tupla_correcta = (1,) # Es una tupla
no_es_tupla = (1) # Es solo un número entre paréntesis
Igual que las listas, pero no puedes modificarlas.
tupla = ("Juan", 25, "Madrid")
# Acceso normal
print(tupla[0]) # Juan
print(tupla[-1]) # Madrid
# Slicing
print(tupla[:2]) # ('Juan', 25)
# Longitud
print(len(tupla)) # 3
# Desempacar tupla
nombre, edad, ciudad = tupla
print(f"{nombre} tiene {edad} años")
¿Cuándo usar cada una?
Usa listas para procesar datos.
# Lista de calificaciones
calificaciones = [7.5, 8.0, 6.5, 9.0, 7.0]
# Calcular promedio
promedio = sum(calificaciones) / len(calificaciones)
print(f"Promedio: {promedio:.2f}")
# Encontrar máxima y mínima
print(f"Máxima: {max(calificaciones)}")
print(f"Mínima: {min(calificaciones)}")
# Contar aprobados (>= 6)
aprobados = sum(1 for c in calificaciones if c >= 6)
print(f"Aprobados: {aprobados}/{len(calificaciones)}")
# Mostrar todas ordenadas
calificaciones_ordenadas = sorted(calificaciones)
print(f"Ordenadas: {calificaciones_ordenadas}")
Verifica si un elemento existe en una lista.
# Lista de estudiantes
estudiantes = ["Juan", "Ana", "Pedro", "María"]
# Buscar un estudiante
nombre_buscado = input("¿Qué estudiante buscas? ")
if nombre_buscado in estudiantes:
posicion = estudiantes.index(nombre_buscado)
print(f"{nombre_buscado} está en la posición {posicion}")
else:
print(f"{nombre_buscado} no está en la lista")
Usa Online Python para hacer estos ejercicios: