Listas en Python: La Guía Completa para Principiantes
Un tutorial claro y práctico para entender cómo funcionan las listas en Python: índices, métodos, trucos y ejemplos explicados paso a paso.
🐍 Listas en Python: Guía Completa para Principiantes
Las listas son una de las estructuras más importantes en Python. Se usan para guardar varios valores y trabajar con ellos de forma ordenada.
En este tutorial veremos desde lo básico (qué es una lista, índices, métodos) hasta un ejemplo práctico de ordenamiento paso a paso.
📌 1. ¿Qué es una lista en Python?
Una lista sirve para guardar varios valores dentro de una sola variable.
- •Se escribe con corchetes
[] - •Cada elemento va separado por comas
numeros = [10, 20, 30, 40]
nombres = ["Ana", "Luis", "Pedro"]
mixta = [1, "hola", 3.5, True]
También puede estar vacía:
vacia = []
📌 2. Índices: cómo funcionan las posiciones
Cada elemento dentro de una lista tiene un índice (posición).
Python empieza a contar desde 0:
frutas = ["manzana", "pera", "plátano", "uva"]
# índices: 0 1 2 3
Acceder a elementos:
print(frutas[0]) # manzana
print(frutas[3]) # uva
Si intentas usar un índice que no existe:
print(frutas[10])
Obtendrás un error: IndexError.
Regla mental: El primer elemento está en la posición 0.
📌 3. Índices negativos
Los índices negativos cuentan desde el final:
frutas = ["manzana", "pera", "plátano", "uva"]
# índices positivos: 0 1 2 3
# índices negativos: -4 -3 -2 -1
Ejemplos:
print(frutas[-1]) # uva (último)
print(frutas[-2]) # plátano
📌 4. Modificar elementos de una lista
Las listas son mutables, es decir, se pueden cambiar.
numeros = [10, 20, 30]
numeros[1] = 99
print(numeros) # [10, 99, 30]
📌 5. Agregar elementos
✔ append() — Agregar al final
frutas = ["manzana", "pera"]
frutas.append("plátano")
print(frutas) # ["manzana", "pera", "plátano"]
✔ insert() — Agregar en una posición específica
frutas = ["manzana", "plátano"]
frutas.insert(1, "pera")
print(frutas) # ["manzana", "pera", "plátano"]
📌 6. Largo de una lista — len()
frutas = ["manzana", "pera", "plátano"]
print(len(frutas)) # 3
📌 7. Eliminar elementos
✔ remove() — eliminar por valor
frutas = ["manzana", "pera", "plátano", "pera"]
frutas.remove("pera")
print(frutas) # ["manzana", "plátano", "pera"]
✔ pop() — eliminar por índice
frutas = ["manzana", "pera", "plátano"]
eliminado = frutas.pop(1)
print(eliminado) # "pera"
print(frutas) # ["manzana", "plátano"]
Sin índice → borra el último:
frutas.pop()
📌 8. Recorrer una lista con un for
Modo simple:
frutas = ["manzana", "pera", "plátano"]
for fruta in frutas:
print(fruta)
Usando índices:
frutas = ["manzana", "pera", "plátano"]
for i in range(len(frutas)):
print(i, frutas[i])
📌 9. Revisar si un elemento está en la lista — in
frutas = ["manzana", "pera", "plátano"]
print("pera" in frutas) # True
print("sandía" in frutas) # False
📌 10. Slicing — obtener sublistas
Sintaxis: lista[inicio:fin]
Incluye inicio, excluye fin.
numeros = [10, 20, 30, 40, 50]
print(numeros[1:4]) # [20, 30, 40]
print(numeros[:3]) # [10, 20, 30]
print(numeros[2:]) # [30, 40, 50]
📌 11. Listas dentro de listas
matriz = [
[1, 2, 3],
[4, 5, 6]
]
print(matriz[0]) # [1, 2, 3]
print(matriz[0][1]) # 2
🧪 12. Ejemplo práctico: ordenando una lista paso a paso
Ahora veamos un ejemplo más completo donde usamos:
- •listas
- •
len() - •bucles
for - •comparación
- •intercambio de valores
Este código ordena una lista de menor a mayor:
lista = [1, 3, 2, 5]
for i in range(len(lista)):
for j in range(i+1, len(lista)):
if lista[i] > lista[j]:
aux = lista[i]
lista[i] = lista[j]
lista[j] = aux
print(lista)
🔍 ¿Qué hace este código?
- •
Definimos la lista:
lista = [1, 3, 2, 5] - •
Primer
for: recorre los índices de la listafor i in range(len(lista)):- •
len(lista)→ 4, porque la lista tiene 4 elementos. - •
range(len(lista))→range(4)→ genera:0, 1, 2, 3. - •Entonces
iva tomando estos valores: 0, 1, 2, 3.
irepresenta la posición actual desde donde vamos a comparar. - •
- •
Segundo
for: compara con los elementos siguientesfor j in range(i+1, len(lista)):- •Empieza en
i + 1, es decir, en el elemento que está después dei. - •Así evitamos comparar un elemento consigo mismo y repetidamente hacia atrás.
Por ejemplo:
- •Si
i = 0, entoncesjva de1a3. - •Si
i = 1,jva de2a3. - •Si
i = 2,jva de3a3→ soloj = 3.
- •Empieza en
- •
La comparación:
if lista[i] > lista[j]:- •Compara los valores en las posiciones
iyj. - •Si el valor en la posición
ies mayor que el dej, están “al revés” para un orden ascendente. - •Entonces los intercambiamos.
- •Compara los valores en las posiciones
- •
Intercambio usando una variable auxiliar
aux = lista[i] lista[i] = lista[j] lista[j] = auxEsto hace el famoso “swap”:
- •Guardamos el valor de
lista[i]enaux. - •Ponemos el valor de
lista[j]enlista[i]. - •Luego ponemos el valor guardado en
auxdentro delista[j].
Así no se pierde ningún valor.
- •Guardamos el valor de
🔁 Mini recorrido de ejemplo
Partimos con:
lista = [1, 3, 2, 5]
- •
i = 0 →
lista[i]es1- •
j = 1→ comparamos1y3→ no se cambia (1 < 3) - •
j = 2→ comparamos1y2→ no se cambia (1 < 2) - •
j = 3→ comparamos1y5→ no se cambia (1 < 5)
Lista sigue igual:
[1, 3, 2, 5] - •
- •
i = 1 →
lista[i]es3- •
j = 2→ comparamos3y2→ 3 > 2, entonces se intercambian Lista pasa a ser:[1, 2, 3, 5] - •
j = 3→ comparamos3y5→ no se cambia (3 < 5)
- •
- •
i = 2 →
lista[i]es3- •
j = 3→ comparamos3y5→ no se cambia (3 < 5)
- •
- •
i = 3 → ya está en el último valor, no habrá cambios.
Resultado final:
print(lista) # [1, 2, 3, 5]
Este es un ejemplo simple de algoritmo de ordenamiento, ideal para que un estudiante entienda:
- •cómo recorrer listas con índices
- •cómo comparar elementos
- •cómo intercambiar valores (
swap)
📚 13. Diccionario de Funciones y Métodos de Listas en Python
Para cerrar, aquí va un resumen de los métodos y funciones más usadas.
🔹 len(lista)
Devuelve el número de elementos.
numeros = [5, 10, 15]
print(len(numeros)) # 3
🔹 append(x)
Agrega x al final.
nombres = ["Ana", "Luis"]
nombres.append("Pedro")
print(nombres)
🔹 insert(indice, x)
Inserta x en esa posición.
numeros = [10, 30]
numeros.insert(1, 20)
print(numeros) # [10, 20, 30]
🔹 remove(x)
Elimina la primera aparición de x.
numeros = [1, 2, 2, 3]
numeros.remove(2)
print(numeros) # [1, 2, 3]
🔹 pop(indice) / pop()
Elimina y devuelve un elemento.
frutas = ["manzana", "pera", "plátano"]
x = frutas.pop(1)
print(x) # "pera"
print(frutas) # ["manzana", "plátano"]
🔹 clear()
Deja la lista vacía.
numeros = [1, 2, 3]
numeros.clear()
print(numeros) # []
🔹 index(x)
Devuelve el índice de la primera aparición.
frutas = ["manzana", "pera", "plátano"]
print(frutas.index("pera")) # 1
🔹 count(x)
Cuenta cuántas veces aparece x.
numeros = [1, 2, 2, 3, 2]
print(numeros.count(2)) # 3
🔹 sort()
Ordena la lista.
numeros = [5, 1, 4, 2]
numeros.sort()
print(numeros) # [1, 2, 4, 5]
🔹 reverse()
Invierte el orden.
nums = [1, 2, 3]
nums.reverse()
print(nums) # [3, 2, 1]
🔹 copy()
Crea una copia independiente.
original = [1, 2, 3]
copia = original.copy()
copia.append(4)
print(original) # [1, 2, 3]
print(copia) # [1, 2, 3, 4]
🔹 list(iterable)
Convierte algo en lista.
r = range(5)
numeros = list(r)
print(numeros) # [0, 1, 2, 3, 4]
🔹 Funciones útiles: min(), max(), sum()
numeros = [5, 10, 3]
print(min(numeros)) # 3
print(max(numeros)) # 10
print(sum(numeros)) # 18
¡Y eso es todo por ahora!