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]:
Algunos gatitos
fuente
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.

Sven Marnach
fuente
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
Michael Hoffman
fuente
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)
Marquistador
fuente
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

sam komo
fuente
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
BCR
fuente