Las listas son una de las estructuras de datos más fundamentales en Python. Te permiten almacenar colecciones de elementos de forma ordenada y mutable. En esta guía, aprenderás todo sobre listas, desde la creación básica hasta técnicas avanzadas de manipulación.

Una lista en Python es una colección ordenada y mutable de elementos. A diferencia de otros lenguajes con arrays estáticos, las listas en Python pueden contener diferentes tipos de datos y cambiar de tamaño durante la ejecución.

🎯 ¿Qué Son las Listas en Python?

Una lista en Python es una estructura de datos que permite almacenar múltiples elementos en una sola variable. Los elementos están ordenados por índice (comenzando desde 0) y pueden ser modificados después de la creación.

# Crear una lista vacía
lista_vacia = []
otra_lista_vacia = list()

# Crear listas con elementos
numeros = [1, 2, 3, 4, 5]
frutas = ["manzana", "banana", "naranja"]
datos_mixtos = [1, "texto de ejemplo", 3.14, True, [1, 2, 3]]

# Crear una secuencia numérica
secuencia = list(range(10))  # Salida: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Obtener la longitud de una lista
print(len(numeros))  # Salida: 5

📝 Accediendo a los Elementos

Indexación

Las listas en Python están indexadas desde 0. Puedes acceder a los elementos usando índices positivos o negativos (los índices negativos comienzan desde el final).

lenguajes = ["Python", "JavaScript", "Java", "C++", "Go"]

# Acceder al primer elemento
print(lenguajes[0])  # Salida: Python

# Acceder al último elemento
print(lenguajes[-1])  # Salida: Go

# Acceder al segundo elemento
print(lenguajes[1])  # Salida: JavaScript

# Acceder al penúltimo elemento
print(lenguajes[-2])  # Salida: C++

Slicing

El slicing te permite extraer porciones de una lista.

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

# Extraer los primeros 3 elementos
print(numeros[0:3])   # Salida: [0, 1, 2]
print(numeros[:3])    # Salida: [0, 1, 2]

# Extraer desde el índice 5 hasta el final
print(numeros[5:])    # Salida: [5, 6, 7, 8, 9]

# Extraer elementos con paso
print(numeros[::2])   # Salida: [0, 2, 4, 6, 8]

➕ Añadiendo Elementos

frutas = ["manzana", "banana"]

# Añadir un elemento al final
frutas.append("naranja")
print(frutas)  # Salida: ['manzana', 'banana', 'naranja']

# Añadir varios elementos
frutas.extend(["pera", "mango"])
print(frutas)  # Salida: ['manzana', 'banana', 'naranja', 'pera', 'mango']

➖ Removiendo Elementos

numeros = [10, 20, 30, 40, 50, 30]

# Eliminar primera ocurrencia de un valor
numeros.remove(30)
print(numeros)  # Salida: [10, 20, 40, 50, 30]

# Eliminar y obtener el último elemento
ultimo = numeros.pop()
print(ultimo)  # Salida: 30

# Vaciar la lista
numeros.clear()

🔄 Modificando Elementos

calificaciones = [7.5, 8.0, 6.5, 9.0]

# Modificar un elemento
calificaciones[0] = 8.0

# Reemplazar un rango de elementos
secuencia = [1, 2, 3]
secuencia[1:2] = [10, 20, 30]

🔍 Buscar en Listas

frutas = ["manzana", "banana", "naranja", "uva", "banana"]

# Verificar si un elemento existe
print("manzana" in frutas)  # Salida: True

# Encontrar el índice de un elemento
indice = frutas.index("naranja")
print(indice)  # Salida: 2

📊 Ordenación

numeros = [5, 2, 8, 1, 9, 3]

# Ordenar ascendentemente
numeros.sort()
print(numeros)  # Salida: [1, 2, 3, 5, 8, 9]

# Ordenar descendentemente
numeros.sort(reverse=True)
print(numeros)  # Salida: [9, 8, 5, 3, 2, 1]

# Crear una lista ordenada sin modificar la original
original = [5, 2, 8, 1, 9]
ordenada = sorted(original)

🔁 Iteración

frutas = ["manzana", "banana", "naranja"]

# Iterar sobre la lista
for fruta in frutas:
    print(fruta)

# Iterar sobre dos listas simultáneamente
nombres = ["Anna", "Bruno", "Charles"]
edades = [25, 30, 28]

for nombre, edad in zip(nombres, edades):
    print(f"{nombre} tiene {edad} años")

🎨 List Comprehension

La comprensión de listas es una forma elegante de crear listas en Python.

# Filtrar números pares
numeros = range(20)
pares = [x for x in numeros if x % 2 == 0]
print(pares)  # Salida: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# Aplanar una matriz
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
aplanada = [elemento for fila in matriz for elemento in fila]
print(aplanada)  # Salida: [1, 2, 3, 4, 5, 6, 7, 8, 9]

🎯 Proyecto Práctico

Para ver las listas en acción, consulta nuestro proyecto de gestor de tareas donde utilizamos listas para almacenar las tareas.

Para más información, consulta la documentación oficial de Python y nuestra guía de bucles.