Check if a value exists in an array in Cython

Jean-Francois Gallant picture Jean-Francois Gallant · Feb 26, 2013 · Viewed 96.9k times · Source

I want to know how to check if a value or a object exists in an array, like in python:

a = [1,2,3,4,5]
b = 4
if b in a:
    print("True!")
else:
    print("False")

I want to know if something similar already exists in cython. I have a struct object array of pointers; I want to know if the object exists in this array.

Like

cdef Node *array

array = <Node *>malloc( 5 * cython.sizeof(Node))

for i in range(5):
     array[i].index = i

cdef Node test = array[3]

if test in array:
    print("True!")

cdef struct Node:
    int index

The code above is not correct, but it illustrates what I mean.

Answer

luser droog picture luser droog · Feb 27, 2013

You pretty much have to iterate through the array and check each element.

#include <stdbool.h>

bool isvalueinarray(int val, int *arr, int size){
    int i;
    for (i=0; i < size; i++) {
        if (arr[i] == val)
            return true;
    }
    return false;
}