Una lista en Python es una estructura de datos ordenada, mutable y que permite duplicados.
Ordenada significa que mantiene el orden en el que insertas los elementos.
Mutable significa que puedes modificarla después de crearla.
Permite duplicados significa que puede contener el mismo valor varias veces.
Es la colección más utilizada en Python.
Crear una lista
mi_lista = [1, 2, 3, 4, 5]
También se puede crear vacía:
mi_lista = []
O usando el constructor:
mi_lista = list((1, 2, 3))
Características fundamentales
- Mantienen el orden de inserción
- Permiten cualquier tipo de dato
- Admiten tipos mezclados
- Son dinámicas (crecen y decrecen en tiempo de ejecución)
mezcla = [1, "hola", 3.14, True]
Acceso a elementos
Por índice
mi_lista = [10, 20, 30, 40]
print(mi_lista[0]) # 10
print(mi_lista[-1]) # 40 (último elemento)
Los índices negativos cuentan desde el final.
Rebanado (Slicing)
numeros = [10, 20, 30, 40, 50]
print(numeros[1:4]) # [20, 30, 40]
print(numeros[:3]) # [10, 20, 30]
print(numeros[::2]) # [10, 30, 50]
Formato general:
lista[inicio:fin:paso]
Métodos útiles para listas
1. Agregar elementos
append(x)
Añade un elemento al final.
mi_lista.append(6)
insert(i, x)
Inserta en una posición específica.
mi_lista.insert(2, 99)
extend(iterable)
Añade varios elementos.
mi_lista.extend([7, 8, 9])
Diferencia clave:
a = [1,2]
a.append([3,4]) # [1,2,[3,4]]
a.extend([3,4]) # [1,2,3,4]
2. Eliminar elementos
remove(x)
Elimina el primer elemento con ese valor.
mi_lista.remove(99)
Si el valor no existe, produce error.
pop(i)
Elimina y devuelve el elemento.
mi_lista.pop() # elimina último
mi_lista.pop(2) # elimina posición 2
clear()
Vacía la lista.
mi_lista.clear()
3. Búsqueda
index(x)
Devuelve el índice del primer valor encontrado.
mi_lista.index(42)
count(x)
Cuenta repeticiones.
mi_lista.count(42)
4. Ordenar y revertir
sort()
Ordena la lista en el lugar.
mi_lista.sort()
mi_lista.sort(reverse=True)
sorted()
Devuelve nueva lista ordenada.
nueva = sorted(mi_lista)
reverse()
Invierte el orden.
mi_lista.reverse()
Ordenar con criterio (key)
palabras = ["python", "java", "c"]
palabras.sort(key=len)
print(palabras)
Ordena por longitud.
5. Copiar listas
copy()
copia = mi_lista.copy()
O usando slicing:
copia = mi_lista[:]
⚠ Error común:
a = [1,2,3]
b = a # NO es copia, es referencia
Ambas variables apuntan al mismo objeto.
Funciones útiles con listas
len(mi_lista)
sum(mi_lista)
min(mi_lista)
max(mi_lista)
Convertir iterable en lista:
list(range(5))
List Comprehension (forma avanzada y elegante)
Permite crear listas de manera compacta.
cuadrados = [x**2 for x in range(6)]
print(cuadrados)
Con condición:
pares = [x for x in range(10) if x % 2 == 0]
Recorrer listas
Forma clásica
for elemento in mi_lista:
print(elemento)
Con índice
for i in range(len(mi_lista)):
print(i, mi_lista[i])
Con enumerate (mejor práctica)
for i, valor in enumerate(mi_lista):
print(i, valor)
Listas anidadas (matrices)
matriz = [
[1,2,3],
[4,5,6],
[7,8,9]
]
print(matriz[1][2]) # 6
Ejemplo práctico completo
mi_lista = [3, 1, 4, 1, 5, 9]mi_lista.append(2)
mi_lista.sort()
mi_lista.remove(1)print(mi_lista)
Salida:
[1, 2, 3, 4, 5, 9]
Errores comunes
- Intentar acceder a un índice inexistente
- Confundir append con extend
- Copiar listas con asignación directa
- Modificar lista mientras se recorre
Ejemplo problemático:
for x in mi_lista:
mi_lista.remove(x) # mala práctica
Cuándo usar listas
Usa listas cuando:
- Necesites orden
- Necesites permitir duplicados
- Vayas a modificar frecuentemente los datos
- Necesites indexación
Métodos principales de las listas en Python
| Método | Qué hace | Ejemplo | Resultado |
|---|---|---|---|
append(x) | Añade un elemento al final | lista.append(5) | [1,2,3,5] |
insert(i, x) | Inserta en posición específica | lista.insert(1, 9) | [1,9,2,3] |
extend(iterable) | Añade varios elementos | lista.extend([4,5]) | [1,2,3,4,5] |
remove(x) | Elimina el primer valor encontrado | lista.remove(2) | [1,3,4] |
pop() | Elimina y devuelve el último | lista.pop() | devuelve 4 |
pop(i) | Elimina por índice | lista.pop(1) | elimina posición 1 |
clear() | Vacía la lista | lista.clear() | [] |
index(x) | Devuelve índice del valor | lista.index(3) | 2 |
count(x) | Cuenta repeticiones | lista.count(2) | 1 |
sort() | Ordena la lista | lista.sort() | [1,2,3] |
sort(reverse=True) | Orden descendente | lista.sort(reverse=True) | [3,2,1] |
reverse() | Invierte el orden | lista.reverse() | [3,2,1] |
copy() | Copia superficial | nueva = lista.copy() | nueva lista independiente |
Funciones útiles (no son métodos, pero se usan siempre)
| Función | Qué hace | Ejemplo |
|---|---|---|
len(lista) | Tamaño de la lista | len(lista) |
sum(lista) | Suma elementos | sum(lista) |
min(lista) | Valor mínimo | min(lista) |
max(lista) | Valor máximo | max(lista) |
sorted(lista) | Devuelve lista ordenada | sorted(lista) |
list(iterable) | Convierte iterable en lista | list(range(5)) |
Diferencia clave que suele confundir
a = [1,2]
a.append([3,4]) # [1,2,[3,4]]
a.extend([3,4]) # [1,2,3,4]
append mete un objeto, extend mete elementos.
Ejercicios
- Crea una lista con los números del 1 al 10 y muestra solo los pares.
- Ordena una lista de palabras por su longitud.
- Elimina todos los duplicados manteniendo el orden.
- Crea una matriz 3×3 e imprime la diagonal principal.
- Genera una lista con los cubos de los números del 1 al 20 usando list comprehension.










