Compruebe si el elemento está en una matriz / lista


203

Si tengo una serie de cadenas, ¿puedo verificar si hay una cadena en la matriz sin hacer un forbucle? Específicamente, estoy buscando una manera de hacerlo dentro de una ifdeclaración, así que algo como esto:

if [check that item is in array]:

3
Creo que la pregunta ya está respondida aquí
Tarun Ande


Respuestas:


396

Suponiendo que quiere decir "lista" donde dice "matriz", puede hacer

if item in my_list:
    # whatever

Esto funciona para cualquier colección, no solo para listas. Para los diccionarios, verifica si la clave dada está presente en el diccionario.


1
@jdi, y ese ciclo se ejecutará mucho más rápido que el codificado explícitamente en Python, sin mencionar que es más fácil de leer.
Mark Ransom

17

También voy a suponer que te refieres a "lista" cuando dices "matriz". La solución de Sven Marnach es buena. Si va a realizar comprobaciones repetidas en la lista, puede valer la pena convertirlo en un conjunto o conjunto congelado, que puede ser más rápido para cada comprobación. Asumiendo que su lista de strs se llama subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

3

Utiliza una función lambda.

Digamos que tienes una matriz:

nums = [0,1,5]

Compruebe si 5 está en nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Esta solución es más robusta. Ahora puede verificar si hay algún número que satisfaga una determinada condición en su matriz nums.

Por ejemplo, verifique si existe algún número mayor o igual a 5 en nums:

(len(filter (lambda x : x >= 5, nums)) > 0)

Esto funciona con Python2. Con Python 3.7, obtendrá este error:TypeError: object of type 'filter' has no len()
Jun711

1

Tienes que usar .values ​​para las matrices. por ejemplo, digamos que tiene un marco de datos que tiene un nombre de columna, es decir, prueba ['Nombre'], puede hacer

if name in test['Name'].values :
   print(name)

para una lista normal no tiene que usar .values


Creo que necesita un objeto Pandas DataFrame para usar .values.
troymyname00

-3

También puede usar la misma sintaxis para una matriz. Por ejemplo, buscando dentro de una serie de Pandas:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.