Python: compruebe si la matriz/lista contiene elemento/valor

En este tutorial, veremos cómo verificar si una lista de Python contiene un elemento o valor. Usaremos varios enfoques con ejemplos y comparación de rendimiento.

Introducción

En este tutorial, veremos cómo verificar si una lista contiene un elemento o valor en Python. Usaremos una lista de cadenas, que contiene algunos animales:

1
animals = ['Dog', 'Cat', 'Bird', 'Fish']

Comprobar si la lista contiene elementos con bucle for

Un método simple y rudimentario para verificar si una lista contiene un elemento es recorrerla y verificar si el elemento en el que estamos coincide con el que estamos buscando. Usemos un bucle for para esto:

1
2
3
for animal in animals:
    if animal == 'Bird':
        print('Chirp!')

Este código dará como resultado:

1
Chirp!

Comprobar si la lista contiene un elemento con el operador in

Ahora, un enfoque más sucinto sería usar el operador integrado in, pero con la declaración if en lugar de la declaración for. Cuando se combina con if, devuelve True si un elemento existe en una secuencia o no. La sintaxis del operador in se ve así:

1
element in list

Haciendo uso de este operador, podemos acortar nuestro código anterior en una sola declaración:

1
if 'Bird' in animals: print('Chirp')

Este fragmento de código generará lo siguiente:

1
Chirp

Este enfoque tiene la misma eficiencia que el bucle for, ya que el operador in, usado así, llama a la función list.__contains__, que inherentemente recorre la lista, aunque es mucho más legible.

Verificar si la lista contiene un elemento con el operador no en {#verificar si la lista contiene el elemento sin el operador}

Por el contrario, podemos usar el operador no en, que es el opuesto lógico del operador en. Devuelve Verdadero si el elemento no está presente en una secuencia.

Reescribamos el ejemplo de código anterior para utilizar el operador not in:

1
if 'Bird' not in animals: print('Chirp')

Ejecutar este código no producirá nada, ya que Bird está presente en nuestra lista.

Pero si lo probamos con un Wolf:

1
if 'Wolf' not in animals: print('Howl')

Este código da como resultado:

1
Howl

Comprobar si la lista contiene elementos con Lambda

Otra forma de verificar si un elemento está presente es filtrar todo lo que no sea ese elemento, al igual que tamizar la arena y verificar si quedan conchas al final. El método filter() incorporado acepta una función lambda y una lista como argumentos. Podemos usar una función lambda aquí para buscar nuestra cadena 'Bird' en la lista de animales.

Luego, envolvemos los resultados en una lista() ya que el método filtro() devuelve un objeto filtro, no los resultados. Si empaquetamos el objeto filtro en una lista, contendrá los elementos que quedan después del filtrado:

1
2
retrieved_elements = list(filter(lambda x: 'Bird' in x, animals))
print(retrieved_elements)

Este código da como resultado:

1
['Bird']

Ahora, este enfoque no es el más eficiente. Es bastante más lento que los tres enfoques anteriores que hemos usado. El método filter() en sí mismo es equivalente a la función del generador:

1
(item for item in iterable if function(item))

La ralentización del rendimiento de este código, entre otras cosas, se debe al hecho de que estamos convirtiendo los resultados en una lista al final, además de ejecutar una función en el elemento en cada iteración.

Comprobar si la lista contiene elementos usando any()

Otro excelente enfoque incorporado es usar la función cualquier(), que es solo una función auxiliar que verifica si hay alguna (al menos 1) instancia de un elemento en una lista. Devuelve Verdadero o Falso en función de la presencia o ausencia de un elemento:

1
2
if any(element in 'Bird' for element in animals):
    print('Chirp')

Dado que esto da como resultado Verdadero, nuestra sentencia print() se llama:

1
Chirp

Este enfoque también es una forma eficiente de verificar la presencia de un elemento. Es tan eficiente como los tres primeros.

Comprobar si la lista contiene elementos usando count()

Finalmente, podemos usar la función count() para verificar si un elemento está presente o no:

1
list.count(element)

Esta función devuelve la ocurrencia del elemento dado en una secuencia. Si es mayor que 0, podemos estar seguros de que un elemento determinado está en la lista.

Comprobemos los resultados de la función count():

1
2
if animals.count('Bird') > 0:
    print("Chirp")

La función count() intrínsecamente hace un bucle en la lista para verificar el número de ocurrencias, y este código da como resultado:

1
Chirp

Conclusión

En este tutorial, hemos repasado varias formas de verificar si un elemento está presente en una lista o no. Hemos utilizado el bucle for, los operadores in y not in, así como los métodos filter(), any() y count().

Licensed under CC BY-NC-SA 4.0