Comprende la idea
Antes de empezar: Listas, condiciones, ciclos y funciones en Python.
Una búsqueda lineal compara el objetivo con los elementos de una lista, uno tras otro. No necesita que los datos estén ordenados. Puede detenerse cuando encuentra una coincidencia o terminar después de revisar todos los elementos.
def buscar(datos, objetivo):
for indice, valor in enumerate(datos):
if valor == objetivo:
return indice
return Noneenumerate entrega el índice y el valor de cada elemento. El primer return está dentro de la condición: solo se ejecuta al encontrar el objetivo. El último está fuera del ciclo: señala que ninguna comparación coincidió.
Qué significa el resultado
Esta función devuelve la primera posición encontrada. Si un valor está repetido, no entrega todas sus posiciones. El contrato debe indicar esa decisión para que quien use la función no espere otra cosa.
Con n elementos, el peor caso necesita n comparaciones: sucede si el objetivo está al final o no aparece. Si está al inicio, basta una. Esto describe el número de comparaciones, no un tiempo exacto en segundos.
¿Por qué no comprobar solamente if posicion?
Porque el índice 0 es un resultado válido, pero se interpreta como falso en una condición. Usa if posicion is not None: para distinguir un hallazgo en la primera posición de la ausencia.
Vamos con un ejemplo
Buscamos 8 en [4, 8, 8]. En el índice 0, 4 no coincide. En el índice 1, 8 coincide y la función devuelve 1; no visita la segunda aparición. Al buscar 3, recorre los tres elementos y devuelve None.
Conecta y aplica
Prueba siempre un elemento inicial, uno intermedio, uno final, un objetivo ausente, una lista vacía y valores repetidos. Esos casos revisan decisiones distintas del algoritmo y descubren errores que una sola prueba no muestra.
Un detalle que importa: Si escribes return None dentro del ciclo después de la primera comparación fallida, la función se detendrá demasiado pronto y no revisará el resto de la lista.
Ponlo a prueba
¿Qué devuelve buscar([5, 2, 5], 5) con la función de esta lección?
Elige una respuesta para ver la explicación.
¿Necesitas ayuda con este tema?
Trabájalo paso a paso con un profesor de EATRYL. Consulta disponibilidad y costo para reforzar Búsqueda lineal: encontrar sin saltarse elementos.
Consultar una clase sobre este tema