[PYTHON] 빠른 문자열 배열 - Cython
PYTHON빠른 문자열 배열 - Cython
가상의 코드를 따르는 것 :
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 배열로 변환하는 방법이 있습니까?
Cython - 문자열 목록을 char **로 변환하고 읽었지만 오류 만 발생시킵니다.
해결법
-
==============================
1.다음 코드를 시도하십시오. 다음 코드의 to_cstring_array 함수가 원하는 것입니다.
다음 코드를 시도하십시오. 다음 코드의 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'])
from https://stackoverflow.com/questions/17511309/fast-string-array-cython by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Matplotlib fill_between가 plot_date와 호환되지 않습니다. (0) | 2018.11.17 |
---|---|
[PYTHON] 팬더 DataFrame을 주황색 테이블로 변환 (0) | 2018.11.17 |
[PYTHON] 영구적 인 파이썬 하위 프로세스 (0) | 2018.11.17 |
[PYTHON] Python line_profiler 코드 예제 (0) | 2018.11.17 |
[PYTHON] IndirectObject 추출을위한 pyPdf (0) | 2018.11.17 |