2012-06-28 29 views
124

Si tengo una serie de cadenas, ¿puedo verificar si hay una cadena en la matriz sin hacer un ciclo for? En concreto, estoy buscando una manera de hacerlo dentro de una instrucción if, así que algo como esto:Comprobar si el elemento está en una matriz/lista

if [check that item is in array]: 
+1

Creo que la pregunta es ya respondió [aquí] (http://stackoverflow.com/questions/9542738/python-find-in-list) –

+0

O mejor aquí: http://stackoverflow.com/questions/12934190/is-there-a-short -contains-function-for-lists – torina

+0

Posible duplicado de [forma más rápida de verificar si un valor existe en una lista] (https://stackoverflow.com/questions/7571635/fastest-way-to-check-if-a- value-exist-in-a-list) –

Respuesta

242

Suponiendo que quiere decir "lista" en el que dice "matriz", que puedo hacer

if item in my_list: 
    # whatever 
+45

... eso es todo? He estado buscando en Google durante 20 minutos ahora ... – SomeKittens

+2

@SomeKittens: la lista realizará internamente su propio bucle para probar la membresía. – jdi

+1

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

15

También voy a suponer que quieres decir "lista" cuando dices "matriz". La solución de Sven Marnach es buena. Si va a hacer comprobaciones repetidas en la lista, entonces valdría la pena convertirlo en un conjunto o conjunto de antenas, que puede ser más rápido para cada control. Asumiendo que su lista de ROS se llama subjects:

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

También puede utilizar la misma sintaxis de 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 
0

Utilice una función lambda.

Digamos que tiene una matriz:

nums = [0,1,5] 

Compruebe si 5 es en nums:

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

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

Por ejemplo, comprobar si cualquier número que es mayor que o igual a 5 existe en nums:

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

usted tiene que utilizar .values ​​para las matrices. por ejemplo, supongamos que tiene una trama de datos que tiene es decir, nombre de la columna, la prueba [ 'nombre'], que puede hacer

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

para obtener una lista normal, usted no tiene que utilizar .values ​​

Cuestiones relacionadas