检查数组中是否存在值

我想知道如何检查数组中是否存在值或对象,如python:

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

但我想知道cython中是否已存在某些内容。 我有一个指针的struct对象数组,想知道该数组中是否存在该对象。 喜欢

 cdef Node *array array = 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 

下面的代码不正确,但它是为了说明我的意思。

你几乎必须遍历数组并检查每个元素。

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

尝试下一个:

(阅读评论和测试,了解它的工作原理)

 #include  #include  /* Return index an integer number begin from start an array, otherwise return -1. */ int indexOf(int *array, int array_size, int number) { for (int i = 0; i < array_size; ++i) { if (array[i] == number) { return i; } } return -1; } // Tests for indexOf() void test_indexOf() { int array[10] = {12, 78, -43, 0, 21, 12, 20, -9, 1, -1}; assert(indexOf(array, 10, 12) == 0); assert(indexOf(array, 10, 0) == 3); assert(indexOf(array, 10, 2) == -1); assert(indexOf(array, 10, 43) == -1); assert(indexOf(array, 10, 11) == -1); assert(indexOf(array, 10, -1) == 9); assert(indexOf(array, 10, 1) == 8); assert(indexOf(array, 10, -2) == -1); assert(indexOf(array, 10, 3) == -1); } int main () { test_indexOf(); return 0; } 

笔记:

  1. 由于C不支持重载函数,因此indexOf()仅适用于数组类型的整数。

  2. C不支持数组指针的确定长度。 因此,您需要手动传递数组大小。

  3. 测试环境:

-

 $ uname -a Linux wlysenko-Aspire 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ gcc --version gcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5