#4 Buscar en una lista - Python

hace 2 años · Actualizado hace 4 meses

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

En este mini-tutorial voy a explicarte como buscar datos en una lista usando Python. Voy a enseñarte como hacerlo con las funciones predefinidas que se incluyen en las librerías de Python.

Para buscar un valor en una lista en Python, puedes utilizar la función index(). Simplemente proporciona el valor que deseas buscar como argumento y la función te devolverá la posición en la que se encuentra dentro de la lista. Sigue leyendo para ver los ejemplos!

Índice
  1. Buscar datos en una lista con Python: Funciones predefinidas
  2. Algoritmos de búsqueda de datos
    1. Algoritmo de búsqueda de datos en listas no ordenadas
    2. Algoritmo de búsqueda de datos en listas ordenadas
  3. Preguntas frecuentes
    1. ▶︎ ¿Qué es una lista en Python?

Buscar datos en una lista con Python: Funciones predefinidas

Teniendo en cuenta que tenemos la lista:

l = ['limón', 'manzana', 'naranja', 'plátano', 'cereza', 'fresa', 'tomate']

Para saber la posición del elemento 'cereza' debemos hacer lo siguiente:

l.index('cereza')

Esta función nos devolverá la posición (empezando en 0) en la que se encuentra la primera aparición del elemento 'cereza', en este caso 4:

buscar datos en python

Si queremos saber cuál es el elemento de la posición 3, debemos utilizar la siguiente sintaxis:

l[3]

Lo que nos devolverá el valor que tenemos almacenado en la posición 3:

buscar en una lista python

▶︎ Si estás muy perdido y no sabes la diferencia entre la posición de una lista y el contenido, ve directamente a esta sección 🙂

Algoritmos de búsqueda de datos

Si quieres saber más de los algoritmos de búsquedas de datos, ya sea porque quieres conocer las bases teóricas o porque quieres implementarlos, aquí tienes toda la información necesaria!

Algoritmo de búsqueda de datos en listas no ordenadas

Si queremos realizar la búsqueda de un elemento en una lista, pero los datos no están ordenados (o no tenemos información sobre si están ordenados) no nos queda otra opción que ir elemento a elemento comprobando si el valor de cada posición de la lista corresponde con el elemento que estamos buscando.

Esta solución es mucho más ineficiente, pero para conjuntos de datos más pequeños es más que suficiente. La lógica para implementar este tipo de solución es la siguiente:

elemento_de_interes <- dato
PARA cada elemento de la lista:
    SI elemento ES IGUAL A elemento_de_interes:
        devolver posicion_actual
devolver -1

Este pseudocódigo indica la lógica de recorrer el array o lista y comprobar si cada elemento coincide con el valor que estamos buscando. En Python, tendríamos las siguientes instrucciones de código:

elemento_de_interes = 'cereza'
def buscar(elemento_de_interes, l):
    for index, element in enumerate(l):
        if element == elemento_de_interes:
            return index
    return -1

Concretamente, en este caso la función enumerate devuelve el índice o posición y el elemento.

Algoritmo de búsqueda de datos en listas ordenadas

Si los datos de la lista están ordenados, podemos optimizar la búsqueda. Para entender a lo que me refiero, tienes que saber que la operación IF es muy costosa, sobre todo si la repetimos muchas veces. Hay ocasiones en las que no nos queda más remedio que utilizarla en largos bucles de iteraciones.

Pero en el caso de una lista ordenada tenemos la opción de ir comprobando algunos elementos sólo. Concretamente, la idea es divide y vencerás, frase que probablemente te suene.

Los pasos son: comprobar si el elemento central de la lista es mayor o menor que el elemento que queremos buscar. Si es mayor, miramos en la primera mitad y comprobamos que el elemento central de la primera mitad sea mayor o menor que el elemento. Si es mayor, volvemos a mirar en la primera mitad de este subconjunto. Así hasta que encontremos el elemento.

Para que entiendas mejor, voy a poner un ejemplo, concretamente el que estábamos utilizando de frutas. Como estaba desordenado, vamos a ordenarlo:

buscar en una lista python

Ahora, l es una lista de elementos ordenados. La lógica sería la siguiente:

algoritmos de busqueda de datos

Espero que este esquema sea de utilidad para que comprendas como funciona el algoritmo. Ahora, voy a ponerlo en formato pseudocódigo para que entiendas la lógica de programación:

lista = ['cereza', 'fresa', 'limón', 'manzana', 'naranja', 'plátano', 'tomate']
posición = tamaño(lista)/2
elemento_de_interés = 'cereza'

FUNCIÓN_RECURSIVA buscar(lista, posición, elemento_de_interés):
    SI lista[posición] ES IGUAL A elemento_de_interés ENTONCES:
        DEVOLVER posición
    SINO:
        SI lista[posición] ES MAYOR A elemento_de_interés ENTONCES:
            buscar (lista, posición/2, elemento_de_interés)
        SINO:
            buscar (lista, posición + posición/2, elemento_de_interés)

En este caso, estamos utilizando la recursividad para aplicar el algoritmo. La recursividad es un recurso que viene muy bien para este tipo de tareas, donde tenemos que realizar la misma operación sobre diferentes subelementos.

Para programar este comportamiento en Python, haremos lo siguiente:

lista = ['cereza', 'fresa', 'limón', 'manzana', 'naranja', 'plátano', 'tomate'] 
posicion = int(len(lista)/2)
elemento_de_interes = 'cereza'

def buscar(lista, posicion, elemento_de_interes):
    if lista[posicion] == elemento_de_interes:
        return posicion
    elif lista[posicion] > elemento_de_interes:
        return buscar(lista, int(posicion/2), elemento_de_interes)
    else:
        return buscar(lista, posicion+int(posicion/2), elemento_de_interes)

Preguntas frecuentes

▶︎ ¿Qué es una lista en Python?

Una lista es un elemento estructurado que nos permite almacenar diferentes elementos simples. En Python, una lista puede tener datos de diferentes tipos siempre y cuando sean simples. Por ejemplo:

como buscar dentro de una lista en python

Estas sentencias son correctas. Para crear una lista, tenemos que usar los [corchetes] y especificar los datos dentro, separados por comas. Una lista tiene N-1 posiciones y en cada posición, tenemos un elemento:

buscar en una lista python

También te voy a hablar de los diferentes algoritmos de búsqueda que hay y como implementar cada uno de ellos. Así que si quieres saber como buscar dentro de una lista en Python, sigue leyendo!

▶︎ Si quieres, puedes descargarte el código que vamos a utilizar en este tutorial directamente en la cuenta de github.

Pionera del caos

Ingeniera Informática con Máster en Bioinformática, casi doctora y freelancer. Todo lo que te cuento en este blog son aprendizajes que yo misma he tenido ya sea durante mis estudios o en otros proyectos!

Otras Entradas Relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *



Para continuar es necesario que confirmes la política de privacidad de la web.

Subir