Cómo agregar elementos a una lista en Python (append, extend, insert, +)

Las listas en Python son mutables, ordenadas, permiten duplicados y cualquier tipo. Métodos principales para añadir items:

1. append(x) — Un elemento al final


frutas = ["manzana", "banana"]
frutas.append("cereza")
print(frutas)  # ['manzana', 'banana', 'cereza']

# Si pasas una lista, la añade COMO UN SOLO ELEMENTO (anidada):
frutas.append(["uva", "kiwi"])
print(frutas)  # ['manzana', 'banana', 'cereza', ['uva', 'kiwi']]

2. extend(iterable) — Múltiples elementos al final (desempaqueta)


frutas = ["manzana", "banana"]
frutas.extend(["uva", "kiwi"])
print(frutas)  # ['manzana', 'banana', 'uva', 'kiwi']

# Funciona con cualquier iterable: tupla, set, range, generador, otra lista
frutas.extend(("mango", "papaya"))
frutas.extend({"pera", "higo"})  # orden aleatorio en set

3. insert(i, x) — En posición índice i


frutas = ["manzana", "banana", "cereza"]
frutas.insert(1, "kiwi")  # índice 1 = segundo lugar
print(frutas)  # ['manzana', 'kiwi', 'banana', 'cereza']

# Índice negativo: cuenta desde el final
frutas.insert(-1, "lima")  # antes del último
print(frutas)  # ['manzana', 'kiwi', 'banana', 'lima', 'cereza']

# Índice >= len → añade al final (como append)
frutas.insert(100, "melón")

4. Operador + / += — Concatenar (crea NUEVA lista / modifica in-place)


a = [1, 2]
b = [3, 4]
c = a + b        # Nueva lista: [1, 2, 3, 4]. 'a' y 'b' inmutables.
a += [5, 6]      # Modifica 'a' in-place (equivalente a a.extend([5, 6])).
print(a)         # [1, 2, 5, 6]

5. list.insert() en bucle / comprensión (patrones)


# Insertar cada 2 elementos
base = [1, 2, 3, 4, 5]
for i in range(len(base)-1, 0, -2):
    base.insert(i, 0)
print(base)  # [1, 0, 2, 3, 0, 4, 5]

# Intercalar dos listas
a = [1, 3, 5]
b = [2, 4, 6]
intercalada = [x for par in zip(a, b) for x in par]  # [1, 2, 3, 4, 5, 6]

6. collections.deque — Para inserciones eficientes en AMBOS extremos


from collections import deque
d = deque([1, 2, 3])
d.append(4)       # derecha O(1)
d.appendleft(0)   # izquierda O(1)
d.insert(2, 1.5)  # medio O(n) igual que list

Resumen: cuál usar

MétodoUsoModifica originalComplejidad
append(x)1 elemento al finalSíO(1) amortizado
extend(iter)Múltiples al finalSíO(k) k=len(iter)
insert(i, x)Posición exactaSíO(n)
+Concatenar (nueva lista)NoO(n+m)
+=Concatenar in-placeSíO(k)

Ejemplo completo interactivo


# lista_demo.py
lista = ["inicio"]
print("1.", lista)

lista.append("append")
print("2.", lista)

lista.extend(["extend1", "extend2"])
print("3.", lista)

lista.insert(1, "insert_idx1")
print("4.", lista)

lista += ["mas1", "mas2"]
print("5.", lista)

# Ejecutar: python lista_demo.py