Métodos de Lista
Domina los 11 métodos de lista en Python: append, extend, insert, remove, pop, index, count, sort, reverse, copy y clear — con ejemplos ejecutables.
Las listas de Python son secuencias mutables y ordenadas. Por ser mutables, el tipo lista incluye once métodos integrados que permiten agregar, eliminar, buscar y reordenar elementos en el lugar — sin necesidad de importaciones. Esta página cubre cada método con ejemplos ejecutables, errores comunes y orientación sobre cuándo elegir uno sobre otro.
Capítulos relacionados: Listas de Python · Ordenar Listas · Comprensión de Listas · Copiar Listas
Referencia rápida
| Método | Qué hace | ¿Muta la lista? | Retorna |
|---|---|---|---|
append(x) | Agrega un elemento al final | Sí | None |
extend(iterable) | Agrega todos los elementos de un iterable al final | Sí | None |
insert(i, x) | Inserta un elemento en la posición i | Sí | None |
remove(x) | Elimina la primera ocurrencia de x | Sí | None |
pop([i]) | Elimina y retorna el elemento en el índice i (por defecto: el último) | Sí | Elemento eliminado |
index(x[, start[, end]]) | Retorna el índice de la primera ocurrencia de x | No | int |
count(x) | Cuenta las ocurrencias de x | No | int |
sort([key][, reverse]) | Ordena los elementos en el lugar | Sí | None |
reverse() | Invierte los elementos en el lugar | Sí | None |
copy() | Retorna una copia superficial | No | Nueva lista |
clear() | Elimina todos los elementos | Sí | None |
Agregar elementos
append()
append(x) agrega un único elemento x al final de la lista. Es una operación O(1) amortizada y es la forma idiomática de construir una lista un elemento a la vez.
append() siempre agrega el argumento como un solo elemento, incluso si ese argumento es en sí mismo una lista:
fruits = ["banana", "orange"]
fruits.append(["apple", "mango"])
print(fruits) # ['banana', 'orange', ['apple', 'mango']]
print(len(fruits)) # 3 — the nested list counts as one elementPara combinar todos los elementos de otra lista, usa extend().
extend()
extend(iterable) añade cada elemento del iterable dado al final de la lista. El iterable puede ser una lista, tupla, conjunto, string o cualquier otro iterable.
extend() es equivalente a fruits += more_fruits. Úsalo cuando ya tienes una colección de elementos para combinar; usa append() para un único elemento.
insert()
insert(i, x) inserta el elemento x antes de la posición i. Todos los elementos existentes en el índice i y posteriores se desplazan una posición a la derecha.
insert(0, x)agrega al inicio (pero es O(n) porque todos los elementos se desplazan).- Si
ies mayor o igual que la longitud de la lista, el elemento se agrega al final — no se lanza ningún error.
Eliminar elementos
remove()
remove(x) recorre la lista de izquierda a derecha y elimina el primer elemento igual a x. Si x no se encuentra, lanza un ValueError.
Protegerse contra ValueError:
fruits = ["banana", "orange"]
item = "mango"
if item in fruits:
fruits.remove(item)
else:
print(f"{item} not in list")
# mango not in listpop()
pop(i) elimina el elemento en el índice i y lo retorna. El valor de retorno es la diferencia clave respecto a remove().
pop() llamado sin argumentos elimina y retorna el último elemento — un patrón común de pila:
stack = ["a", "b", "c"]
last = stack.pop()
print(stack) # ['a', 'b']
print(last) # cclear()
clear() elimina todos los elementos de la lista, dejándola vacía. Es equivalente a del lst[:] pero más legible.
fruits = ["banana", "apple", "orange"]
fruits.clear()
print(fruits) # []Usa clear() cuando quieras vaciar una lista a la que otras variables también podrían hacer referencia — fruits = [] simplemente reasignaría el nombre, mientras que clear() vacía el objeto subyacente.
Buscar elementos
index()
index(x) retorna el índice entero de la primera ocurrencia de x. Acepta argumentos opcionales start y end para limitar la búsqueda a un segmento.
Búsqueda dentro de un rango:
items = ["a", "b", "c", "b", "d"]
print(items.index("b")) # 1 — first occurrence
print(items.index("b", 2)) # 3 — first occurrence at index >= 2index() lanza ValueError si el elemento no está presente. Usa in para verificar primero cuando la ausencia del elemento sea posible:
if "mango" in fruits:
pos = fruits.index("mango")count()
count(x) retorna el número de veces que x aparece en la lista.
A diferencia de index(), count() nunca lanza un error por un valor ausente — retorna 0.
Ordenar elementos
sort()
sort() ordena la lista en el lugar en orden ascendente de forma predeterminada. Acepta dos argumentos de palabra clave opcionales:
reverse=True— ordena en orden descendente.key=<callable>— una función aplicada a cada elemento antes de comparar.
Ordenar en orden descendente:
numbers = [3, 1, 4, 1, 5]
numbers.sort(reverse=True)
print(numbers) # [5, 4, 3, 1, 1]Ordenar strings sin distinguir mayúsculas y minúsculas con key:
words = ["banana", "Apple", "cherry", "date"]
words.sort(key=str.lower)
print(words) # ['Apple', 'banana', 'cherry', 'date']sort() muta la lista y retorna None. Si necesitas una copia ordenada sin modificar el original, usa la función integrada sorted():
original = [3, 1, 4]
result = sorted(original)
print(original) # [3, 1, 4] — unchanged
print(result) # [1, 3, 4]Consulta Ordenar Listas para una guía detallada que incluye comparadores personalizados y ordenamiento de objetos.
reverse()
reverse() invierte la lista en el lugar. Al igual que sort(), retorna None.
Para obtener una copia invertida sin mutar el original, usa reversed() (retorna un iterador) o slicing:
fruits = ["banana", "apple", "orange"]
print(list(reversed(fruits))) # ['orange', 'apple', 'banana']
print(fruits[::-1]) # ['orange', 'apple', 'banana']
print(fruits) # ['banana', 'apple', 'orange'] — unchangedCopiar
copy()
copy() retorna una copia superficial de la lista — un nuevo objeto lista que contiene las mismas referencias a los elementos.
original = ["banana", "apple", "orange"]
clone = original.copy()
clone.append("mango")
print(original) # ['banana', 'apple', 'orange'] — unchanged
print(clone) # ['banana', 'apple', 'orange', 'mango']"Superficial" significa que los objetos anidados (como una lista dentro de una lista) no se duplican — tanto el original como la copia reflejarán los cambios en esos objetos anidados. Para un duplicado completamente independiente, usa copy.deepcopy() de la biblioteca estándar. Consulta Copiar Listas para una explicación detallada de copias superficiales vs. profundas.
Errores comunes
Todos los métodos que mutan retornan None. Un error frecuente es asignar el resultado de sort(), reverse(), append(), etc.:
# Wrong — result is None, not a sorted list
numbers = [3, 1, 2]
numbers = numbers.sort()
print(numbers) # None# Correct — sort() mutates in place
numbers = [3, 1, 2]
numbers.sort()
print(numbers) # [1, 2, 3]remove() e index() lanzan ValueError para elementos ausentes. Siempre verifica con in primero, o captura la excepción, cuando el elemento podría no estar presente.
append() vs extend() con listas. Usar append(otra_lista) anida la lista como un único elemento; extend(otra_lista) combina sus elementos.