Aprende Python · lección gratuita
Un algoritmo es una secuencia de pasos para resolver un problema. Muchas tareas habituales sobre listas (encontrar el máximo, contar, sumar, buscar) siguen patrones que se repiten una y otra vez. Aprender estos patrones clásicos te da la base para resolver casi cualquier problema combinando bucles, listas y condicionales.
contador += 1) cuando se cumple una condición.suma y luego suma / len(lista).La idea central de casi todos estos algoritmos es la misma: declaras una variable de control antes del bucle (el máximo provisional, el contador en 0, la suma en 0) y la vas actualizando mientras recorres la lista. Al terminar el bucle, esa variable contiene la respuesta. A este patrón se le llama "acumulador".
Para el máximo, una técnica robusta es asumir que el primer elemento es el mayor y luego comparar con el resto. Si encuentras algo más grande, lo reemplazas. El mismo razonamiento (invertido) sirve para el mínimo.
numeros = [4, 9, 2, 7, 1]
mayor = numeros[0] # candidato inicial
for n in numeros:
if n > mayor:
mayor = n # encontré algo más grande
print(mayor) # 9
La búsqueda lineal es distinta: en lugar de recorrer todo, podemos devolver en cuanto encontramos el objetivo. Recorremos por índice con range(len(lista)) para poder informar la posición, y si terminamos sin éxito devolvemos -1.
numeros = [4, 9, 2, 7, 1]
# 1) Contar cuántos son mayores que 3
contador = 0
for n in numeros:
if n > 3:
contador += 1
print(contador) # 3 (el 4, el 9 y el 7)
# 2) Sumar y promediar
suma = 0
for n in numeros:
suma += n
print(suma) # 23
print(suma / len(numeros)) # 4.6
# 3) Búsqueda lineal: ¿en qué posición está el 7?
posicion = -1
for i in range(len(numeros)):
if numeros[i] == 7:
posicion = i
print(posicion) # 3
# 4) ¿Está ordenada de menor a mayor?
ordenada = True
for i in range(len(numeros) - 1):
if numeros[i] > numeros[i + 1]:
ordenada = False
print(ordenada) # False
💡 Inicializa el acumulador con el valor neutro correcto. Para sumar empieza en0, para contar en0, y para el máximo/mínimo usa el primer elemento de la lista (no0, porque la lista podría tener solo números negativos).
| Tarea | Patrón |
|---|---|
| Máximo | m = lista[0] y if n > m: m = n |
| Mínimo | m = lista[0] y if n < m: m = n |
| Contar con condición | c = 0 y if cond: c += 1 |
| Sumar | s = 0 y s += n |
| Promedio | s / len(lista) |
| Búsqueda lineal | recorrer con índice y devolver posición o -1 |
| Invertir | inv.insert(0, n) o lista[::-1] |
| ¿Ordenada? | comparar lista[i] > lista[i+1] |
---
← Módulos y librería estándarTrabajar con datos: listas de diccionarios →