W3docs

Listas de Python: Una Guía Completa

Aprende listas de Python: crea, accede, segmenta, modifica, ordena y usa comprensiones de listas. Cubre todos los métodos integrados con ejemplos.

Esta página cubre todo lo que necesitas saber sobre las listas de Python — cómo crearlas, leer y modificar su contenido, usar el segmentado, aplicar métodos integrados, escribir comprensiones de listas, trabajar con listas anidadas y desempaquetar valores de listas en variables.

¿Qué Es una Lista de Python?

Una lista es la estructura de datos integrada más versátil de Python. Almacena una secuencia ordenada de elementos, donde cada elemento puede ser de cualquier tipo: un número, un string, un boolean, otra lista o cualquier objeto. Las listas son:

  • Ordenadas — los elementos mantienen la posición que les asignas.
  • Mutables — puedes agregar, eliminar o cambiar elementos después de crear la lista.
  • Indexadas — cada elemento tiene un índice entero que comienza en 0.
  • Heterogéneas — una sola lista puede contener valores de diferentes tipos.

Crea una lista con corchetes, separando los elementos con comas:

python— editable, runs on the server

Una lista vacía se escribe como []. Las listas también pueden contener tipos mixtos:

mixed = [42, 'hello', True, 3.14, None]
print(mixed)
# [42, 'hello', True, 3.14, None]

Acceder a los Elementos de una Lista

Indexación Positiva

Accede a un elemento por su posición de base cero dentro de corchetes:

python— editable, runs on the server

Indexación Negativa

Los índices negativos cuentan hacia atrás desde el final. -1 es el último elemento, -2 el penúltimo, y así sucesivamente — útil cuando conoces la posición desde el final pero no la longitud total:

python— editable, runs on the server

Segmentado

Un segmento extrae una sub-lista usando la sintaxis list[start:stop:step]. El índice stop es exclusivo (no se incluye).

fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']

print(fruits[1:4])   # ['banana', 'cherry', 'date']
print(fruits[:2])    # ['apple', 'banana']   — start defaults to 0
print(fruits[2:])    # ['cherry', 'date', 'elderberry'] — stop defaults to end
print(fruits[::2])   # ['apple', 'cherry', 'elderberry'] — every other item
print(fruits[::-1])  # ['elderberry', 'date', 'cherry', 'banana', 'apple'] — reversed copy

El segmentado siempre devuelve una nueva lista y nunca genera un IndexError, incluso si los índices están fuera de rango.

Modificar Elementos de una Lista

Debido a que las listas son mutables, puedes asignar un nuevo valor a cualquier índice:

python— editable, runs on the server

También puedes reemplazar un rango de elementos usando la asignación por segmento:

nums = [1, 2, 3, 4, 5]
nums[1:3] = [20, 30]
print(nums)
# [1, 20, 30, 4, 5]

Agregar Elementos

append() — Agregar al Final

append() agrega un solo elemento al final de la lista en el lugar:

python— editable, runs on the server

insert() — Agregar en una Posición Específica

insert(index, value) coloca un nuevo elemento antes del índice dado sin eliminar nada:

fruits = ['apple', 'banana', 'cherry']
fruits.insert(1, 'mango')
print(fruits)
# ['apple', 'mango', 'banana', 'cherry']

extend() — Agregar Múltiples Elementos

extend() agrega todos los elementos de otro iterable (lista, tupla o string) al final:

a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
# [1, 2, 3, 4, 5, 6]

El operador + hace lo mismo pero devuelve una nueva lista en lugar de modificar la original:

combined = [1, 2, 3] + [4, 5, 6]
print(combined)
# [1, 2, 3, 4, 5, 6]

Eliminar Elementos

remove() — Eliminar por Valor

remove() elimina la primera aparición de un valor. Genera ValueError si el valor no está en la lista:

python— editable, runs on the server

pop() — Eliminar por Índice

pop() elimina y devuelve el elemento en un índice dado (predeterminado: último elemento). Esto es útil cuando necesitas tanto recuperar como eliminar un elemento:

fruits = ['apple', 'banana', 'cherry']
last = fruits.pop()
print(last)    # cherry
print(fruits)  # ['apple', 'banana']

first = fruits.pop(0)
print(first)   # apple
print(fruits)  # ['banana']

del — Eliminar por Índice o Segmento

La instrucción del elimina un elemento por índice o un segmento completo:

python— editable, runs on the server

clear() — Eliminar Todos los Elementos

clear() vacía la lista sin eliminarla:

fruits = ['apple', 'banana', 'cherry']
fruits.clear()
print(fruits)
# []

Métodos Útiles de Lista

Las listas de Python incluyen un conjunto completo de métodos integrados. Consulta Métodos de Lista de Python para la referencia completa.

len() — Longitud de la Lista

python— editable, runs on the server

sort() — Ordenar en el Lugar

sort() ordena la lista en orden ascendente de forma predeterminada. Usa reverse=True para orden descendente:

python— editable, runs on the server

Usa el parámetro key para ordenar por un criterio personalizado — por ejemplo, por la longitud de las palabras:

words = ['banana', 'apple', 'cherry', 'date']
words.sort(key=len)
print(words)
# ['date', 'apple', 'banana', 'cherry']

sort() modifica la lista en el lugar. Para obtener una copia ordenada sin cambiar la original, usa la función integrada sorted():

original = [3, 1, 2]
s = sorted(original)
print(original)  # [3, 1, 2]
print(s)         # [1, 2, 3]

Consulta Ordenar Listas para más patrones de ordenamiento.

reverse() — Invertir en el Lugar

python— editable, runs on the server

count() — Contar Ocurrencias

count(value) devuelve cuántas veces aparece un valor:

nums = [1, 2, 2, 3, 2, 4]
print(nums.count(2))
# 3

index() — Encontrar un Valor

index(value) devuelve el índice de la primera aparición. Genera ValueError si no se encuentra:

nums = [1, 2, 3, 4]
print(nums.index(3))
# 2

copy() — Copia Superficial

copy() devuelve una nueva lista con los mismos elementos de nivel superior. Modificar la copia no afecta a la original:

original = [1, 2, 3]
copy = original.copy()
copy.append(4)
print(original)  # [1, 2, 3]
print(copy)      # [1, 2, 3, 4]

Ordenar vs. Invertir: Diferencia Clave

sort() y reverse() ambos modifican la lista en el lugar y devuelven None. Un error común es escribir my_list = my_list.sort(), lo que reemplaza la lista con None. Siempre llámalos como instrucciones:

fruits = ['banana', 'apple', 'cherry']
fruits.sort()   # correct — modifies in place
# fruits = fruits.sort()  # wrong — sets fruits to None
print(fruits)
# ['apple', 'banana', 'cherry']

Listas Anidadas

Una lista puede contener otras listas como elementos, formando una estructura 2D (o más profunda):

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]

print(matrix[0])     # [1, 2, 3]
print(matrix[1][2])  # 6  — row 1, column 2

Las listas anidadas se usan comúnmente para representar cuadrículas, tablas y matrices.

Comprensiones de Listas

Una comprensión de lista es una expresión concisa de una sola línea para construir una nueva lista transformando o filtrando un iterable existente. La sintaxis es:

[expression for item in iterable if condition]

La parte if condition es opcional.

Cuadrados del 1 al 10:

python— editable, runs on the server

Solo números pares:

evens = [x for x in range(1, 11) if x % 2 == 0]
print(evens)
# [2, 4, 6, 8, 10]

Transformar strings:

fruits = ['apple', 'banana', 'cherry']
upper = [f.upper() for f in fruits]
print(upper)
# ['APPLE', 'BANANA', 'CHERRY']

Las comprensiones de listas son generalmente más rápidas que un bucle for equivalente con append(). Consulta Comprensión de Listas para patrones avanzados.

Desempaquetar Listas

Puedes asignar los elementos de una lista a variables individuales en un solo paso:

a, b, c = ['x', 'y', 'z']
print(a, b, c)
# x y z

El operador * (asterisco) captura cualquier número de elementos restantes:

first, *rest = [1, 2, 3, 4, 5]
print(first)  # 1
print(rest)   # [2, 3, 4, 5]

El desempaquetado genera ValueError si el número de variables no coincide con el número de elementos (a menos que uses *).

Cuándo Usar una Lista

SituaciónRecomendación
Colección ordenada que cambia de tamañoLista
Colección fija que no debe cambiarTupla
Prueba de pertenencia rápida (in)Set
Mapeo clave-valorDiccionario
Arrays numéricos grandesnumpy.array (third-party)

Práctica

Práctica
¿Cuáles de las siguientes afirmaciones sobre las listas de Python son correctas?
¿Cuáles de las siguientes afirmaciones sobre las listas de Python son correctas?
Was this page helpful?