¿Qué son las Listas?
Las listas son estructuras de datos ordenadas y mutables que pueden contener elementos de diferentes tipos.
Crear Listas
# Lista vacía
lista_vacia = []
otra_vacia = list()
# Lista con elementos
numeros = [1, 2, 3, 4, 5]
mixta = [1, "texto", 3.14, True]
anidada = [[1, 2], [3, 4], [5, 6]]Acceder a Elementos
frutas = ["manzana", "pera", "uva", "naranja"]
# Por índice
print(frutas[0]) # manzana
print(frutas[-1]) # naranja (último)
# Slicing (rebanado)
print(frutas[1:3]) # ["pera", "uva"]
print(frutas[:2]) # ["manzana", "pera"]
print(frutas[2:]) # ["uva", "naranja"]
print(frutas[::2]) # ["manzana", "uva"]Modificar Listas
numeros = [1, 2, 3, 4, 5]
# Cambiar un elemento
numeros[0] = 10
print(numeros) # [10, 2, 3, 4, 5]
# Cambiar varios elementos
numeros[1:3] = [20, 30]
print(numeros) # [10, 20, 30, 4, 5]Métodos de Listas
Agregar Elementos
frutas = ["manzana", "pera"]
# append() - agregar al final
frutas.append("uva")
print(frutas) # ["manzana", "pera", "uva"]
# insert() - insertar en posición
frutas.insert(1, "kiwi")
print(frutas) # ["manzana", "kiwi", "pera", "uva"]
# extend() - agregar múltiples elementos
frutas.extend(["naranja", "melón"])
print(frutas)Eliminar Elementos
numeros = [1, 2, 3, 4, 5, 3]
# remove() - elimina primera aparición
numeros.remove(3)
print(numeros) # [1, 2, 4, 5, 3]
# pop() - elimina y retorna elemento
ultimo = numeros.pop()
print(ultimo) # 3
print(numeros) # [1, 2, 4, 5]
# del - elimina por índice
del numeros[0]
print(numeros) # [2, 4, 5]
# clear() - vacía la lista
numeros.clear()
print(numeros) # []Búsqueda y Conteo
numeros = [1, 2, 3, 2, 4, 2, 5]
# count() - contar apariciones
print(numeros.count(2)) # 3
# index() - encontrar posición
print(numeros.index(3)) # 2
# in - verificar existencia
if 3 in numeros:
print("3 está en la lista")Ordenar y Revertir
numeros = [5, 2, 8, 1, 9]
# sort() - ordena in-place
numeros.sort()
print(numeros) # [1, 2, 5, 8, 9]
# sort(reverse=True) - orden descendente
numeros.sort(reverse=True)
print(numeros) # [9, 8, 5, 2, 1]
# sorted() - retorna nueva lista ordenada
original = [5, 2, 8, 1]
ordenada = sorted(original)
print(original) # [5, 2, 8, 1]
print(ordenada) # [1, 2, 5, 8]
# reverse() - invierte orden
numeros = [1, 2, 3, 4]
numeros.reverse()
print(numeros) # [4, 3, 2, 1]Operaciones con Listas
# Concatenación
lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
resultado = lista1 + lista2
print(resultado) # [1, 2, 3, 4, 5, 6]
# Repetición
lista = ["a", "b"]
print(lista * 3) # ["a", "b", "a", "b", "a", "b"]
# Longitud
print(len(lista)) # 2
# Min, Max, Sum
numeros = [5, 2, 8, 1, 9]
print(min(numeros)) # 1
print(max(numeros)) # 9
print(sum(numeros)) # 25List Comprehension
# Crear lista de cuadrados
cuadrados = [x**2 for x in range(10)]
print(cuadrados) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Con condición
pares = [x for x in range(20) if x % 2 == 0]
print(pares) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# Transformar lista
frutas = ["manzana", "pera", "uva"]
mayusculas = [f.upper() for f in frutas]
print(mayusculas) # ["MANZANA", "PERA", "UVA"]Listas Anidadas
# Matriz 3x3
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Acceder a elementos
print(matriz[0][0]) # 1
print(matriz[1][2]) # 6
# Recorrer matriz
for fila in matriz:
for elemento in fila:
print(elemento, end=" ")
print() # Nueva líneaCopiar Listas
# Copia por referencia (¡CUIDADO!)
lista1 = [1, 2, 3]
lista2 = lista1
lista2[0] = 99
print(lista1) # [99, 2, 3] - ¡Ambas cambian!
# Copia superficial
lista1 = [1, 2, 3]
lista2 = lista1.copy()
# o lista2 = lista1[:]
# o lista2 = list(lista1)
lista2[0] = 99
print(lista1) # [1, 2, 3] - No cambia
print(lista2) # [99, 2, 3]Ejemplos Prácticos
Filtrar Lista
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = [n for n in numeros if n % 2 == 0]
print(pares) # [2, 4, 6, 8, 10]Eliminar Duplicados
numeros = [1, 2, 2, 3, 3, 3, 4, 5]
unicos = list(set(numeros))
print(unicos) # [1, 2, 3, 4, 5]Buscar Mayor y Menor
numeros = [45, 12, 89, 23, 67]
mayor = max(numeros)
menor = min(numeros)
print(f"Mayor: {mayor}, Menor: {menor}")Conclusión
Las listas son una de las estructuras de datos más versátiles de Python. Dominar sus métodos y operaciones es esencial para cualquier programador Python.