1.4 – ¿Qué es una lista?

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étodoQué haceEjemploResultado
append(x)Añade un elemento al finallista.append(5)[1,2,3,5]
insert(i, x)Inserta en posición específicalista.insert(1, 9)[1,9,2,3]
extend(iterable)Añade varios elementoslista.extend([4,5])[1,2,3,4,5]
remove(x)Elimina el primer valor encontradolista.remove(2)[1,3,4]
pop()Elimina y devuelve el últimolista.pop()devuelve 4
pop(i)Elimina por índicelista.pop(1)elimina posición 1
clear()Vacía la listalista.clear()[]
index(x)Devuelve índice del valorlista.index(3)2
count(x)Cuenta repeticioneslista.count(2)1
sort()Ordena la listalista.sort()[1,2,3]
sort(reverse=True)Orden descendentelista.sort(reverse=True)[3,2,1]
reverse()Invierte el ordenlista.reverse()[3,2,1]
copy()Copia superficialnueva = lista.copy()nueva lista independiente

Funciones útiles (no son métodos, pero se usan siempre)

FunciónQué haceEjemplo
len(lista)Tamaño de la listalen(lista)
sum(lista)Suma elementossum(lista)
min(lista)Valor mínimomin(lista)
max(lista)Valor máximomax(lista)
sorted(lista)Devuelve lista ordenadasorted(lista)
list(iterable)Convierte iterable en listalist(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

  1. Crea una lista con los números del 1 al 10 y muestra solo los pares.
  2. Ordena una lista de palabras por su longitud.
  3. Elimina todos los duplicados manteniendo el orden.
  4. Crea una matriz 3×3 e imprime la diagonal principal.
  5. Genera una lista con los cubos de los números del 1 al 20 usando list comprehension.