当前位置: 首页 > 面试题库 >

快速字符串数组-Cython

松嘉运
2023-03-14
问题内容

具有以下假设代码:

cdef extern from "string.h":
    int strcmp(char* str1, char* str2)

def foo(list_str1, list_str2):
    cdef unsigned int i, j
    c_arr1 = ??
    c_arr2 = ??
    for i in xrange(len(list_str1)):
        for j in xrange(len(list_str2)):
            if not strcmp(c_arr1[i], c_arr2[j]):
                do some funny stuff

有什么方法可以将列表转换为c数组吗?


问题答案:

尝试以下代码to_cstring_array以下代码中的函数是您想要的。

from libc.stdlib cimport malloc, free
from libc.string cimport strcmp
from cpython.string cimport PyString_AsString

cdef char ** to_cstring_array(list_str):
    cdef char **ret = <char **>malloc(len(list_str) * sizeof(char *))
    for i in xrange(len(list_str)):
        ret[i] = PyString_AsString(list_str[i])
    return ret

def foo(list_str1, list_str2):
    cdef unsigned int i, j
    cdef char **c_arr1 = to_cstring_array(list_str1)
    cdef char **c_arr2 = to_cstring_array(list_str2)

    for i in xrange(len(list_str1)):
        for j in xrange(len(list_str2)):
            if i != j and strcmp(c_arr1[i], c_arr2[j]) == 0:
                print i, j, list_str1[i]
    free(c_arr1)
    free(c_arr2)

foo(['hello', 'python', 'world'], ['python', 'rules'])


 类似资料:
  • 在Objective-C中,我使用了以下内容:

  • 问题内容: 我有一个字符串: 我想要一个简单的方法将其转换为实际的。 我能从中挖掘出的所有其他问题都与将int字符串转换为数组有关。 我试着做 但是我明白了 手动清理边缘并去除斜线似乎是我做错了什么。 我很好奇是否有一种简单的方法可以将字符串数组作为字符串转换为字符串数组。 即转换为 解决方案 (感谢@Eric D) 问题答案: 将您的“字符串数组”编码为数据,然后将此数据作为JSON解码为Swi

  • 问题内容: 如何快速将数组转换为 JSON 字符串?基本上,我有一个文本框,其中嵌入了一个按钮。按下按钮后,文本字段文本将添加到中。此外,我想将此数组转换为 JSON 字符串。 这是我尝试过的: 我也想使用我的方法返回 JSON 字符串。 问题答案: 就目前而言,您正在将其转换为数据,然后尝试将数据转换为JSON形式的对象(失​​败,不是JSON)并将其转换为字符串,基本上,您进行了一堆毫无意义的

  • 数组和动态数组 数组 array Rust 使用数组存储相同类型的数据集。 [T; N]表示一个拥有 T 类型,N 个元素的数组。数组的大小是固定。 例子: fn main() { let mut array: [i32; 3] = [0; 3]; array[1] = 1; array[2] = 2; assert_eq!([1, 2], &array[1..])

  • 问题内容: 我有以下格式的日期字符串: 我需要将其更改为以下内容: 以前,我一直使用此库-> SwiftDate来操作日期,但现在不起作用。 我也尝试过类似的东西: 但这不起作用。我能怎么做? 提前致谢。 问题答案: 具有小数秒和时区的标准ISO8601日期格式为 yyyy-MM-dd’T’HH:mm:ss.SSSZ 斯威夫特3: 在macOS 10.13+中,iOS 11+ 是输入格式化程序的替

  • 问题内容: 我从html解析中得到一个字符串,即 我的代码是这样的 我不确定我的第二个拆分字符串应该是“’”还是“’,” 我希望我的结果是 问题答案: 我将使用正则表达式从这样的复杂输入中提取子字符串。 Swift 3.1: Swift 2.0: