Volver al curso

Python Desde Cero

leccion
10 / 21
beginner
20 horas
Estructuras de Datos

Listas y Tuplas: Organiza Colecciones de Datos

Lectura
25 min~4 min lectura

Listas y Tuplas: Organiza Colecciones de Datos

Hasta ahora hemos trabajado con variables que guardan un solo valor. En la vida real necesitamos manejar colecciones: una lista de productos, nombres de usuarios, temperaturas de la semana. Para eso existen las listas y las tuplas.

Listas en Python

Una lista es una coleccion ordenada y mutable (modificable) de elementos. Se define con corchetes.

frutas = ['manzana', 'banana', 'cereza']
numeros = [1, 2, 3, 4, 5]
mixta = [42, 'hola', True, 3.14, None]
lista_vacia = []

print(frutas)
print(type(frutas))
print(len(frutas))
Indexacion: Acceder a elementos

Cada elemento tiene un indice. En Python los indices empiezan en 0.

frutas = ['manzana', 'banana', 'cereza', 'durazno', 'kiwi']

# Indices positivos
print(frutas[0])   # manzana
print(frutas[1])   # banana
print(frutas[4])   # kiwi

# Indices negativos
print(frutas[-1])  # kiwi
print(frutas[-2])  # durazno
Slicing: Sub-listas
numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numeros[2:5])   # [2, 3, 4]
print(numeros[:4])    # [0, 1, 2, 3]
print(numeros[6:])    # [6, 7, 8, 9]
print(numeros[::2])   # [0, 2, 4, 6, 8]
print(numeros[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Modificar listas
productos = ['laptop', 'mouse', 'teclado']

productos[1] = 'monitor'
print(productos)

productos.append('webcam')
print(productos)

productos.insert(1, 'mouse')
print(productos)

productos.extend(['auriculares', 'microfono'])
print(len(productos))
Eliminar elementos
colores = ['rojo', 'verde', 'azul', 'amarillo', 'verde']

colores.remove('verde')
print(colores)

eliminado = colores.pop(0)
print(eliminado)
print(colores)

numeros = [1, 2, 3, 4, 5, 6]
del numeros[2:4]
print(numeros)
Metodos utiles
numeros = [3, 1, 4, 1, 5, 9, 2, 6, 5]

print(numeros.count(1))
print(numeros.index(5))

numeros.sort()
print(numeros)

numeros.sort(reverse=True)
print(numeros)

copia = numeros.copy()
numeros.clear()
print(numeros)
print(copia)
Funciones integradas para listas
precios = [25.99, 12.50, 89.99, 5.00, 45.75]

print(min(precios))
print(max(precios))
print(sum(precios))
print(len(precios))

precios_ordenados = sorted(precios)
print(precios_ordenados)
print(precios)  # Sin cambios
Buscar en listas
frutas = ['manzana', 'banana', 'cereza']

print('banana' in frutas)    # True
print('kiwi' in frutas)      # False
print('kiwi' not in frutas)  # True
Caso real: Sistema de inventario
inventario = []

def agregar_producto(nombre, cantidad, precio):
    inventario.append({'nombre': nombre, 'cantidad': cantidad, 'precio': precio})
    print(f'Producto agregado: {nombre}')

def mostrar_inventario():
    if not inventario:
        print('El inventario esta vacio')
        return
    
    total_valor = 0
    for i, prod in enumerate(inventario, 1):
        valor = prod['cantidad'] * prod['precio']
        total_valor += valor
        print(f"{i}. {prod['nombre']}: {prod['cantidad']} x {prod['precio']} = {valor}")
    print(f'Valor total: {total_valor}')

def buscar_producto(nombre):
    for prod in inventario:
        if prod['nombre'].lower() == nombre.lower():
            return prod
    return None

agregar_producto('Laptop', 10, 800)
agregar_producto('Mouse', 50, 25)
agregar_producto('Teclado', 30, 60)

mostrar_inventario()

prod = buscar_producto('mouse')
if prod:
    print(f'Encontrado: {prod}')
Tuplas: Colecciones inmutables

Una tupla es como una lista, pero inmutable: una vez creada no se puede modificar. Se define con parentesis.

coordenadas = (40.7128, -74.0060)
colores_rgb = (255, 128, 0)
tupla_vacia = ()
tupla_uno = (42,)  # La coma es obligatoria para un solo elemento

print(coordenadas[0])
print(len(colores_rgb))

Inmutabilidad

punto = (3, 7)

# Esto fallaria:
# punto[0] = 10  # TypeError

# Puedes crear una nueva tupla
nuevo_punto = (10, punto[1])
print(nuevo_punto)

Cuando usar tuplas

  1. Los datos no deben cambiar (coordenadas, configuracion)
  2. Mayor rendimiento que las listas
  3. Pueden ser claves de diccionario
capitales = {
    (40.7128, -74.0060): 'Nueva York',
    (51.5074, -0.1278): 'Londres',
    (-34.6037, -58.3816): 'Buenos Aires'
}

print(capitales[(-34.6037, -58.3816)])

Desempaquetar tuplas

punto = (3, 7)
x, y = punto
print(f'x={x}, y={y}')

nombre, edad, ciudad = ('Ana', 28, 'Buenos Aires')
print(f'{nombre} tiene {edad} anios en {ciudad}')

primero, *resto = [1, 2, 3, 4, 5]
print(primero)  # 1
print(resto)    # [2, 3, 4, 5]
Listas de listas (matrices)
matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matriz[1][2])  # 6

for fila in matriz:
    for elemento in fila:
        print(elemento, end=' ')
    print()
💡 Concepto Clave

Revisemos los puntos más importantes de esta lección antes de continuar.

Resumen

Caracteristica Lista Tupla
Sintaxis [1, 2, 3] (1, 2, 3)
Mutable Si No
Velocidad Mas lenta Mas rapida
Como clave de dict No Si

En la proxima leccion estudiaremos los diccionarios, la estructura mas versatil de Python.

🧠 Pon a prueba tu conocimiento
¿Cuál es el aspecto más importante que aprendiste en esta lección?
  • Comprendo el concepto principal y puedo explicarlo con mis palabras
  • Entiendo cómo aplicarlo en mi situación específica
  • Necesito repasar algunas partes antes de continuar
  • Quiero ver más ejemplos prácticos del tema
✅ ¡Excelente! Continúa con la siguiente lección para profundizar más.