Listas
📘 ¿Qué es una lista en Python?
Una lista es una colección ordenada y mutable de elementos. Puede contener elementos de cualquier tipo (números, cadenas, otras listas, objetos, etc.).
Las listas se definen usando corchetes []
.
🔸 Ejemplo básico:
mi_lista = [1, 2, 3, "hola", True, 3.14]
🧩 Propiedades de las listas
Propiedad | Descripción |
---|---|
Ordenadas | Los elementos tienen un orden definido. |
Mutables | Puedes cambiar, agregar o eliminar elementos. |
Indexadas | Puedes acceder a los elementos por su índice (mi_lista[0] , etc). |
Pueden contener diferentes tipos | Enteros, cadenas, listas, objetos… |
🧰 Métodos de listas en Python
A continuación, te muestro todos los métodos integrados de las listas en Python, con una explicación y un ejemplo para cada uno.
1. append(x)
Agrega un elemento al final de la lista.
lista = [1, 2, 3]
lista.append(4)
print(lista) # [1, 2, 3, 4]
2. extend(iterable)
Agrega todos los elementos de un iterable (como otra lista) al final.
lista = [1, 2]
lista.extend([3, 4])
print(lista) # [1, 2, 3, 4]
3. insert(i, x)
Inserta el elemento x
en la posición i
.
lista = [1, 2, 4]
lista.insert(2, 3)
print(lista) # [1, 2, 3, 4]
4. remove(x)
Elimina la primera aparición del elemento x
.
lista = [1, 2, 3, 2]
lista.remove(2)
print(lista) # [1, 3, 2]
5. pop([i])
Elimina y devuelve el elemento en la posición i
. Si no se indica, elimina el último.
lista = [1, 2, 3]
valor = lista.pop(1)
print(valor) # 2
print(lista) # [1, 3]
6. clear()
Elimina todos los elementos de la lista.
lista = [1, 2, 3]
lista.clear()
print(lista) # []
7. index(x[, start[, end]])
Devuelve el índice de la primera aparición de x
.
lista = ['a', 'b', 'c', 'a']
print(lista.index('a')) # 0
print(lista.index('a', 1)) # 3
8. count(x)
Devuelve el número de veces que aparece x
.
lista = [1, 2, 2, 3, 2]
print(lista.count(2)) # 3
9. sort(key=None, reverse=False)
Ordena la lista en el lugar (in-place).
lista = [3, 1, 4, 2]
lista.sort()
print(lista) # [1, 2, 3, 4]
# Orden inverso
lista.sort(reverse=True)
print(lista) # [4, 3, 2, 1]
10. reverse()
Invierte el orden de los elementos.
lista = [1, 2, 3]
lista.reverse()
print(lista) # [3, 2, 1]
11. copy()
Devuelve una copia superficial (shallow copy) de la lista.
lista = [1, 2, 3]
nueva = lista.copy()
print(nueva) # [1, 2, 3]
📏 Indexación y slicing
Acceso a elementos:
lista = [10, 20, 30]
print(lista[0]) # 10
print(lista[-1]) # 30 (último elemento)
Slicing (sublistas):
lista = [1, 2, 3, 4, 5]
print(lista[1:4]) # [2, 3, 4]
print(lista[:3]) # [1, 2, 3]
print(lista[::2]) # [1, 3, 5]
🔄 Otras operaciones útiles
Concatenar listas:
a = [1, 2]
b = [3, 4]
c = a + b
print(c) # [1, 2, 3, 4]
Repetir listas:
lista = [0] * 3
print(lista) # [0, 0, 0]
Pertenencia:
lista = [1, 2, 3]
print(2 in lista) # True
print(4 in lista) # False
Longitud:
lista = [1, 2, 3]
print(len(lista)) # 3
🧠 Comprensión de listas (List comprehensions)
Una forma compacta de crear listas a partir de iterables.
# Lista de cuadrados
cuadrados = [x**2 for x in range(5)]
print(cuadrados) # [0, 1, 4, 9, 16]
# Con condicional
pares = [x for x in range(10) if x % 2 == 0]
print(pares) # [0, 2, 4, 6, 8]
🧪 Comparación entre listas
a = [1, 2]
b = [1, 2]
print(a == b) # True (valores)
print(a is b) # False (identidad en memoria)
🧵 Listas anidadas
matriz = [[1, 2], [3, 4]]
print(matriz[1][0]) # 3
🔹 list.sort()
Este método modifica la lista original y no devuelve una nueva lista.
nombres = ['Ana', 'Carlos', 'Bea']
nombres.sort() # Ordena alfabéticamente
print(nombres) # ['Ana', 'Bea', 'Carlos']
Con reverse=True
:
nombres = ['Ana', 'Carlos', 'Bea']
nombres.sort(reverse=True)
print(nombres) # ['Carlos', 'Bea', 'Ana']
🔹 sorted()
Esta función devuelve una nueva lista ordenada y deja la original sin cambios.
numeros = [4, 1, 3, 2]
ordenados = sorted(numeros)
print(ordenados) # [1, 2, 3, 4]
print(numeros) # [4, 1, 3, 2] — no se modificó
Con reverse=True
:
ordenados = sorted(numeros, reverse=True)
print(ordenados) # [4, 3, 2, 1]
📌 Diferencia clave:
Característica | sort() |
sorted() |
---|---|---|
Modifica original | ✅ Sí | ❌ No |
Retorna nueva lista | ❌ No (retorna None ) |
✅ Sí |
Uso común | mi_lista.sort() |
sorted(mi_lista) |
🔹 .reverse()
(método de lista)
- Modifica la lista original, en su lugar.
- No retorna nada (
None
).
frutas = ['manzana', 'pera', 'uva']
frutas.reverse()
print(frutas) # ['uva', 'pera', 'manzana']
🔹 reversed()
(función incorporada)
- No modifica la lista original.
- Devuelve un iterador, que puedes convertir en una lista si lo necesitas.
frutas = ['manzana', 'pera', 'uva']
frutas_invertidas = list(reversed(frutas))
print(frutas_invertidas) # ['uva', 'pera', 'manzana']
print(frutas) # ['manzana', 'pera', 'uva'] — no cambió
📌 Comparación rápida
Característica | .reverse() |
reversed() |
---|---|---|
¿Modifica original? | ✅ Sí | ❌ No |
¿Devuelve algo? | ❌ No (None ) |
✅ Sí (iterador) |
¿Es función o método? | Método de lista | Función incorporada |
¿Necesita conversión? | No | Sí, si quieres una lista (list() ) |
✅ Usos comunes
- Usa
.reverse()
si quieres invertir una lista existente sin crear otra. - Usa
reversed()
si necesitas mantener la original intacta o si estás en un bucle:
for x in reversed([1, 2, 3]):
print(x)
# Imprime: 3, 2, 1