Métodos de lista en Python: append, extend, insert, remove y pop

Las listas de Python son la estructura de datos más usada del lenguaje. Casi todos los programas que escribas van a necesitar añadir elementos, eliminarlos o reorganizarlos. Python incluye cinco métodos que cubren el 90 % de esos casos: append(), extend(), insert(), remove() y pop(). Conocerlos bien, y saber cuándo usar cada uno, evita bugs silenciosos que aparecen en producción.

append() — añadir un elemento al final

append(x) añade el objeto x como un único elemento al final de la lista. La clave es como un único elemento: si pasas una lista, se añade como lista anidada, no se fusiona.

frutas = ["manzana", "pera"]
frutas.append("naranja")
print(frutas)  # ['manzana', 'pera', 'naranja']

# Trampa clásica: append de una lista anida en lugar de fusionar
frutas.append(["uva", "kiwi"])
print(frutas)  # ['manzana', 'pera', 'naranja', ['uva', 'kiwi']]

extend() — fusionar otra secuencia

extend(iterable) añade cada elemento del iterable por separado. Funciona con listas, tuplas, generadores o cualquier cosa iterable.

letras = ["a", "b"]
letras.extend(["c", "d"])
print(letras)  # ['a', 'b', 'c', 'd']

# También funciona con cadenas (itera carácter a carácter)
letras.extend("ef")
print(letras)  # ['a', 'b', 'c', 'd', 'e', 'f']

# El operador += es equivalente a extend
numeros = [1, 2]
numeros += [3, 4]
print(numeros)  # [1, 2, 3, 4]

La diferencia clave: append vs extend

Esta es la confusión más frecuente entre principiantes:

a = [1, 2, 3]
b = [1, 2, 3]

a.append([4, 5])    # añade UNA lista anidada
b.extend([4, 5])    # añade DOS elementos sueltos

print(a)  # [1, 2, 3, [4, 5]]
print(b)  # [1, 2, 3, 4, 5]
print(len(a))  # 4
print(len(b))  # 5

insert() — insertar en una posición

insert(i, x) inserta el elemento x antes de la posición i. Con índice 0 inserta al principio; con un índice mayor que la longitud, añade al final sin lanzar error.

colores = ["rojo", "azul", "verde"]
colores.insert(1, "amarillo")
print(colores)  # ['rojo', 'amarillo', 'azul', 'verde']

# Insertar al principio
colores.insert(0, "blanco")
print(colores)  # ['blanco', 'rojo', 'amarillo', 'azul', 'verde']

Ten en cuenta que insert() desplaza todos los elementos posteriores una posición: es una operación O(n) en el peor caso. Para inserciones frecuentes en el inicio, considera collections.deque.

remove() y pop() — eliminar elementos

remove(x) busca la primera aparición de x y la elimina. Lanza ValueError si el elemento no existe. pop(i) elimina y devuelve el elemento en la posición i; sin argumento, elimina el último.

nums = [10, 20, 30, 20, 40]

nums.remove(20)       # elimina la primera aparición del valor 20
print(nums)           # [10, 30, 20, 40]

ultimo = nums.pop()   # elimina y devuelve el último
print(ultimo)         # 40
print(nums)           # [10, 30, 20]

segundo = nums.pop(1) # elimina y devuelve el elemento en índice 1
print(segundo)        # 30
print(nums)           # [10, 20]

El error clásico: modificar una lista mientras la iteras

Nunca modifiques una lista mientras la recorres con un bucle for. El iterador interno avanza por índice y se salta elementos:

# MAL: se saltan elementos
numeros = [1, 2, 3, 4, 5, 6]
for n in numeros:
    if n % 2 == 0:
        numeros.remove(n)
print(numeros)  # [1, 3, 5] — correcto por suerte, pero...

numeros = [1, 2, 2, 3]
for n in numeros:
    if n == 2:
        numeros.remove(n)
print(numeros)  # [1, 2, 3] — ¡falla! Se salta un 2

# BIEN: itera sobre una copia o usa list comprehension
numeros = [1, 2, 2, 3]
numeros = [n for n in numeros if n != 2]
print(numeros)  # [1, 3]

Estos cinco métodos cubren la mayoría de las necesidades de manipulación de listas. La regla práctica: usa append() para un elemento, extend() para fusionar colecciones, insert() cuando necesites posición exacta, remove() cuando sabes el valor y pop() cuando necesitas el elemento eliminado.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP