W3docs

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étodoQué hace¿Muta la lista?Retorna
append(x)Agrega un elemento al finalNone
extend(iterable)Agrega todos los elementos de un iterable al finalNone
insert(i, x)Inserta un elemento en la posición iNone
remove(x)Elimina la primera ocurrencia de xNone
pop([i])Elimina y retorna el elemento en el índice i (por defecto: el último)Elemento eliminado
index(x[, start[, end]])Retorna el índice de la primera ocurrencia de xNoint
count(x)Cuenta las ocurrencias de xNoint
sort([key][, reverse])Ordena los elementos en el lugarNone
reverse()Invierte los elementos en el lugarNone
copy()Retorna una copia superficialNoNueva lista
clear()Elimina todos los elementosNone

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.

python— editable, runs on the server

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 element

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

python— editable, runs on the server

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.

python— editable, runs on the server
  • insert(0, x) agrega al inicio (pero es O(n) porque todos los elementos se desplazan).
  • Si i es 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.

python— editable, runs on the server

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 list

pop()

pop(i) elimina el elemento en el índice i y lo retorna. El valor de retorno es la diferencia clave respecto a remove().

python— editable, runs on the server

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)   # c

clear()

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.

python— editable, runs on the server

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 >= 2

index() 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.

python— editable, runs on the server

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.
python— editable, runs on the server

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.

python— editable, runs on the server

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']  — unchanged

Copiar

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.

Práctica

Práctica
Which Python list method removes every element from the list and returns None?
Which Python list method removes every element from the list and returns None?
Was this page helpful?