benjamonsh.dev

Listas en Python: La Guía Completa para Principiantes

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.

6m 58s de lectura2025-11-15

#PYTHON

#PROGRAMACIÓN

#LISTAS

#TUTORIAL

🐍 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.

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:

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?

  1. Definimos la lista:

    lista = [1, 3, 2, 5]
    
  2. Primer for: recorre los índices de la lista

    for 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 i va tomando estos valores: 0, 1, 2, 3.

    i representa la posición actual desde donde vamos a comparar.

  3. Segundo for: compara con los elementos siguientes

    for j in range(i+1, len(lista)):
    
    • Empieza en i + 1, es decir, en el elemento que está después de i.
    • Así evitamos comparar un elemento consigo mismo y repetidamente hacia atrás.

    Por ejemplo:

    • Si i = 0, entonces j va de 1 a 3.
    • Si i = 1, j va de 2 a 3.
    • Si i = 2, j va de 3 a 3 → solo j = 3.
  4. La comparación:

    if lista[i] > lista[j]:
    
    • Compara los valores en las posiciones i y j.
    • Si el valor en la posición i es mayor que el de j, están “al revés” para un orden ascendente.
    • Entonces los intercambiamos.
  5. Intercambio usando una variable auxiliar

    aux = lista[i]
    lista[i] = lista[j]
    lista[j] = aux
    

    Esto hace el famoso “swap”:

    • Guardamos el valor de lista[i] en aux.
    • Ponemos el valor de lista[j] en lista[i].
    • Luego ponemos el valor guardado en aux dentro de lista[j].

    Así no se pierde ningún valor.


🔁 Mini recorrido de ejemplo

Partimos con:

lista = [1, 3, 2, 5]

Resultado final:

print(lista)  # [1, 2, 3, 5]

Este es un ejemplo simple de algoritmo de ordenamiento, ideal para que un estudiante entienda:


📚 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!